Unity中的碰撞检测主要由两个组件完成
- 刚体Rigidbody
- 碰撞体Collider
碰撞的必要条件 - 发生碰撞的两个物体至少有一个带有Rigidbody组件,即刚体
- 发生碰撞的两个物体都必须带有碰撞器组件
- 持续碰撞的回调方法需要有相对运动才有调起
- 注意:如果带有刚体的物体不发生运动,刚体会处于休眠状态,系统不会进行碰撞检测的,如果带有刚体的物体运动,刚体会一直处于活动状态,碰撞检测才会进行。
碰撞器的回调方法 - OnCollisionEnter(Collision other) 碰撞开始一瞬间被调用
- OnCollisionStay(Collision other)一直保持碰撞状态时被调用
- OnCollisionExit(Collision other)碰撞分离的一瞬间被调用
Unity中的触发器
当勾选Is Trigger时,成为触发器
如果是碰撞器,两个物体之间是不能够穿透的,勾选Is Trigger之后,触发器是可以穿透的
触发器检测发生的条件:
- 两个物体都需要有碰撞器
- 至少有一个物体是挂载刚体
- 其中一个勾选Is Trigger
触发器的回调方法:
- OnTriggerEnter(Collider other)当进入触发器时调用一次
- OnTriggerStay(Collider other)处于某个触发器中的时候持续调用
-
OnTriggerExit(Collider other)退出触发器的时候调用一次
image.png