1、物体碰撞的必要条件?
1. 双方都有碰撞器(collider)
2. 运动方具有刚体(Rigidbody)
注意:
1. 静止的物体,不会因为被碰撞而发生位移。
2. 刚体放在静止的物体上会休眠,所以一般要将刚体放在运动的物体身上。
3. 无刚体的运动方去碰撞物体,相当于没有撞上,即便双方都带有碰撞器也会相互穿过。
如果想要两个物体碰撞后都有因为物理引擎而发生位移,则双方都要有刚体和碰撞器且不能是静止的状态(即Static要为false)
2、碰撞器和触发器的区别?
在Unity中,碰撞器是触发器的载体,而触发器只是碰撞器身上的一个属性。
当属性 [Is Trigger] = false 时,碰撞器根据物理引擎引发碰撞,产生碰撞的效果,可以调用OnCollisionEnter/Stay/Exit函数;
当属性 [Is Trigger] = true 时,碰撞器被物理引擎所忽略,没有碰撞效果,可以调用OnTriggerEnter/Stay/Exit函数。
Enter:该事件在两物体碰撞/接触瞬间,执行一次。
Stay:该事件在两物体碰撞/接触期间,不断执行。
Exit:该事件在两物体碰撞/接触分开,执行一次。
如果既要检测到物体的接触又不想让碰撞检测影响物体移动或要检测一个物件是否经过空间中的某个区域这时就可以用到触发器。