unity检测碰撞有两种方式

一.触发(需要勾选IsTrigger选项)

    1.MonoBehaviour.OnTriggerEnter( Collider other )当进入触发器
    2.MonoBehaviour.OnTriggerExit( Collider other )当退出触发器
    3.MonoBehaviour.OnTriggerStay( Collider other )当逗留触发器

二.碰撞

    1.MonoBehaviour.OnCollisionEnter( Collision collisionInfo ) 当进入碰撞器
    2.MonoBehaviour.OnCollisionExit( Collision collisionInfo ) 当退出碰撞器
    3.MonoBehaviour.OnCollisionStay( Collision collisionInfo )  当逗留碰撞器

 当然,要发生碰撞,两个物体都添加碰撞器,其中一个还要有刚体。这些是基本,下面来说下它们之间的区别

我在刚开始使用的时候,出现了一两次错误,我觉得这是新手应该都比较容易犯的,

问题就出在这两种检测方式的名称和参数都不同

勾选IsTrigger时,方法名OnTrigger开头,参数类型为Collider

不勾选时,方法名OnCollision开头,参数类型为Collision

参数弄错时,碰撞发生了也不会有碰撞信息