Unity3D的碰撞检测响应处理细节


请尊重原作者的工作,转载时请务必注明转载自:www.xionggf.com

1 对碰撞做出响应所必须的条件

要想两个物体A,B发生碰撞检测,即触发OnCollision相关事件,或者触发OnTrigger相关事件。必须:

  1. 物体A,B都挂接上了一个碰撞器组件,即Collider类(2D环境下是Collider2D类)的子类
  2. 运动着的物体,要携带一个刚体组件,即RigidBody类(2D环境下是RigidBody2D类),另一方的物体如果是静止的话,可以不用携带刚体组件。

2 碰撞时触发OnCollision相关事件的条件

在满足第1节中所提出的条件下,当两者的刚体组件(如果有的话)的Is Kinematic属性都未勾选,且两者的碰撞器组件的Is Trigger属性,都没勾选时,便会触发OnCollision相关事件。

3 碰撞时触发OnCollision相关事件的条件

在满足第1节中所提出的条件下,当两者的碰撞器组件的Is Trigger属性,其中有一个勾选时,就会触发OnTrigger相关事件。

4 响应事件的分类

响应事件分为EntertStaytExitt。以OnTrigger为例,就是就是OnTriggerEnterOnTriggerStayOnTriggerExit(2D环境下就是OnTriggerEnter2DOnTriggerStay2DOnTriggerExit2D,OnCollision事件以此类推)。

  1. Enter事件便是两个物体碰撞的那一瞬间,此事件在碰撞过程会执行一次
  2. Stay事件表示两个物体在持续接触时,此事件在碰撞过程会多次执行。
  3. Exit事件便是两个物体在分开的那一瞬间,此事件在碰撞过程会执行一次