Unity3D开发的时候经常遇到这个疑问,OnTriggerEnter/Exit,OnCollisionEnter/Exit触发不了,究竟是怎么回事呢?下面我们来看具体的细节。
OnTriggerEnter/Exit
触发条件
- 至少有一个碰撞体有Rigidbody
- 至少有一个碰撞体是Trigger
接收消息者
- 如果碰撞体不是Trigger,若有rigidbody就发给rigidbody,否则发给本身
- 如果碰撞体是Trigger,发送给本身,也发送给rigidbody,如果有的话
注意
- 物体进入Trigger后disable,不能触发OnTriggerExit
- 物体进入Trigger后,Trigger本身disable,不能触发OnTriggerExit
- Trigger在里面有物体的时候enable,是可以触发OnTriggerEnter的
OnCollisionEnter/Exit
触发条件
- 至少有一个碰撞体有一个非Kinematic的Rigidbody
- 都不是Trigger
接收消息者
- 碰撞体如果有rigidbody则消息发给rigidbody,否则就发给碰撞体本身