每个台阶(零件)都有多个碰撞体,所有碰撞体勾选触发器,除了紫色台阶(下称A)外,正常台阶(下称B)另有鼠标拖动的相关代码和刚体。
想要达到B接近A时产生的一个吸附效果,我想到的方案是if判断AB两者的中心坐标,当两者中心坐标值相差不大时,B的坐标值变更为A的坐标值,然后再将A销毁。
//此段代码在鼠标拖动的脚本内
void OnTriggerStay(Collider collider)
{
if (gameObject.tag == collider.gameObject.tag)
{
if((transform.position - collider.transform.position).sqrMagnitude < 1)
{
dragged = false;//false时,关闭鼠标拖动的功能
this.gameObject.transform.position = collider.gameObject.transform.position;
//transform.position = Vector3.MoveTowards(transform.position, collider.gameObject.transform.position, Time.deltaTime);
//yield return new WaitForSeconds(1.0f);
Destroy(collider.gameObject);
}
}
}
然而在使用时.B一旦和A产生接触,A很快就进行了销毁,但是B停留在原地并没有移动到A的位置上。改用MoveToWards和协程延时仍旧如此。
失效的原因是什么?如何更改?又或者有没有其他好的实现吸附效果的设计?