关于MonoBehaviour.OnTriggerEnter和MonoBehaviour.OnCollisionEnter

关于MonoBehaviour.OnTriggerEnter和MonoBehaviour.OnCollisionEnter

整理关于OnTriggerEnterOnCollisionEnter的触发条件

对于三个带有collider组件的gameObject A,B,C

当对象A未勾选Is Trigger,分别去碰撞BBcollider组件不勾选Is Trigger)和CCcollider组件勾选Is Trigger)时:

  • A, B,C均不带有rigidbody组件,运动状态未发生变化,OnCollisionEnterOnTriggerEnter均不会触发。
  • A带有rigidbody组件,B,C均不带有rigidbody组件的情况下:
    • AB接触时,A受到碰撞发生旋转,B未发生变化。AB脚本内OnCollisionEnter均触发,OnTriggerEnter均不会触发

    • AC接触时,AC运动状态未发生变化。AC脚本内OnCollisionEnter均未触发,OnTriggerEnter均触发

  • A,B,C均带有rigidbody组件
    • AB接触时,AB受到碰撞发生旋转。AB脚本内OnCollisionEnter均触发,OnTriggerEnter均不会触发
    • AC接触时,AC运动状态未发生变化。AC脚本内OnCollisionEnter均未触发,OnTriggerEnter均触发

A勾选Is Trigger,去碰撞CCcollider组件勾选Is Trigger)时

  • A, C均不带有rigidbody组件。接触时,运动状态未发生变化,OnCollisionEnterOnTriggerEnter均不会触发。
  • AC至少带有一个rigidbody组件。接触时,AC运动状态未发生变化。AC脚本内OnCollisionEnter均未触发,OnTriggerEnter均触发

两个collider产生碰撞的条件:至少有一collider带有rigidbody组件

若两个collider可以产生碰撞且均未勾选Is Trigger,触发OnCollisionEnter。否则触发OnTriggerEnter

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