关于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勾选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

posted @ 2022-01-05 20:19  ug_难  阅读(172)  评论(0)    收藏  举报