关于MonoBehaviour.OnTriggerEnter和MonoBehaviour.OnCollisionEnter
关于MonoBehaviour.OnTriggerEnter和MonoBehaviour.OnCollisionEnter
整理关于OnTriggerEnter和OnCollisionEnter的触发条件
对于三个带有collider组件的gameObject A,B,C:

当对象A未勾选Is Trigger,分别去碰撞B(B的collider组件不勾选Is Trigger)和C(C的collider组件勾选Is Trigger)时:
- A, B,C均不带有
rigidbody组件,运动状态未发生变化,OnCollisionEnter和OnTriggerEnter均不会触发。 - A带有
rigidbody组件,B,C均不带有rigidbody组件的情况下:-
A与B接触时,A受到碰撞发生旋转,B未发生变化。A和B脚本内
OnCollisionEnter均触发,OnTriggerEnter均不会触发 -
A与C接触时,A和C运动状态未发生变化。A和C脚本内
OnCollisionEnter均未触发,OnTriggerEnter均触发
-
- A,B,C均带有
rigidbody组件- A与B接触时,A和B受到碰撞发生旋转。A和B脚本内
OnCollisionEnter均触发,OnTriggerEnter均不会触发 - A与C接触时,A和C运动状态未发生变化。A和C脚本内
OnCollisionEnter均未触发,OnTriggerEnter均触发
- A与B接触时,A和B受到碰撞发生旋转。A和B脚本内
当A勾选Is Trigger,去碰撞C(C的collider组件勾选Is Trigger)时
- A, C均不带有
rigidbody组件。接触时,运动状态未发生变化,OnCollisionEnter和OnTriggerEnter均不会触发。 - A与C至少带有一个
rigidbody组件。接触时,A和C运动状态未发生变化。A和C脚本内OnCollisionEnter均未触发,OnTriggerEnter均触发
两个collider产生碰撞的条件:至少有一collider带有rigidbody组件
若两个collider可以产生碰撞且均未勾选Is Trigger,触发OnCollisionEnter。否则触发OnTriggerEnter
浙公网安备 33010602011771号