U3D的碰撞与触发
碰撞器
首先需要需要两个物体,两个物体都必须要带 Collider 组件, 其中主动放必须要带有刚体组件(RigidBody)组件。
发生碰撞后,会执行三个函数
1、 OnCollisionEnter(Collision collision)
两个物体进入碰撞。(只在进入时调用一次)
2、OnCollisionStay(Collision collision)
两个物体进入接触或穿越。
当两个物体进行接触时候 或者 主动方 穿过物体时候 会触发该函数(但不会一直调用)
3、OnCollisionExit(Collision collision)
主动方退出时调用。(只在退出接触时调用)
触发器
需要两个物体,两个物体必须要带 Collider 组件,两个物体其中一个要带刚体 组件 (也可以连个都带),其中一个物体必须要设置 IsTrigger 开启。
发生触发时候,会执行三个函数
1、 OnTriggerEnter(Collider other)
两个物体进入碰撞。(只在进入时调用一次)
2、OnTriggerStay(Collider other)
两个物体进入接触或穿越。
当两个物体进行接触时候 或者 主动方 穿过物体时候 会触发该函数(会一直调用)
3、OnTriggerEnter(Collider other)
主动方退出时调用。(只在退出接触时调用)
触发和碰撞的区别
相同点:两个物体都要带 Collider 组件
不同点:
- 1、触发是任意一个物体附带刚体组件
碰撞是主动方必须附带刚体组件 - 2、触发需要有一个物体的 IsTrigger 勾选
碰撞不需要 - 3、触发 只要有触发就会调用接受事件回调函数
碰撞只会调用主动方的回调函数