Unity3D的碰撞检测响应处理细节
Table of Contents
请尊重原作者的工作,转载时请务必注明转载自:www.xionggf.com
1 对碰撞做出响应所必须的条件
要想两个物体A,B发生碰撞检测,即触发OnCollision
相关事件,或者触发OnTrigger
相关事件。必须:
- 物体A,B都挂接上了一个碰撞器组件,即
Collider
类(2D环境下是Collider2D
类)的子类 - 运动着的物体,要携带一个刚体组件,即
RigidBody
类(2D环境下是RigidBody2D
类),另一方的物体如果是静止的话,可以不用携带刚体组件。
2 碰撞时触发OnCollision相关事件的条件
在满足第1节中所提出的条件下,当两者的刚体组件(如果有的话)的Is Kinematic
属性都未勾选,且两者的碰撞器组件的Is Trigger
属性,都没勾选时,便会触发OnCollision
相关事件。
3 碰撞时触发OnCollision相关事件的条件
在满足第1节中所提出的条件下,当两者的碰撞器组件的Is Trigger
属性,其中有一个勾选时,就会触发OnTrigger
相关事件。
4 响应事件的分类
响应事件分为Enter
、Stay
、Exit
。以OnTrigger
为例,就是OnTriggerEnter
、OnTriggerStay
、OnTriggerExit
(2D环境下就是OnTriggerEnter2D
,OnTriggerStay2D
,OnTriggerExit2D
,OnCollision
事件以此类推)。
Enter
事件便是两个物体碰撞的那一瞬间,此事件在碰撞过程会执行一次
Stay
事件表示两个物体在持续接触时,此事件在碰撞过程会多次执行。
Exit
事件便是两个物体在分开的那一瞬间,此事件在碰撞过程会执行一次