首页 > 代码库 > [Unity-4] 碰撞检测
[Unity-4] 碰撞检测
一、基本介绍
要进行碰撞检测有两个必须的组件,刚体(Rigidbody)和碰撞器(Collider)。
1、刚体是一个非常重要的组件。新创建的物体默认情况下是不具备物理效果的,而刚体组件可以给物体添加一些常见的物理属性,例如质量、力、速度等,这些属性可以使得该物体表现出实际中物体的一切行为。
2、碰撞器分为盒子碰撞器(Box Collider)、球体碰撞器(Sphere Collider)、胶囊碰撞器(Capsule Collider)、网格碰撞器(Mesh Collider)和车轮碰撞器(Wheel Collider),不同的碰撞器适用于不同形状的游戏体。
二、碰撞检测
1、刚体具有以下几个碰撞检测的函数:
a.OnCollisionEnter(Collision other):碰撞刚发生的时候触发此方法,需要在这一时刻执行的指令可以写到这里面。
b.OnCollisionStay(Collision other):碰撞中触发的函数,在碰撞持续过程中,每一帧都会执行以下这个函数,需要在碰撞发生过程中执行的指令可以写到这里面。
c.OnCollisionExit(Collision other):碰撞退出触发的函数,需要在碰撞结束的时刻执行的指令可以写到这里面。
2、碰撞器具有以下几个碰撞检测的函数:
d.OnTriggerEnter(Collider other):同OnCollisionEnter(Collision other)
e.OnTriggerStay(Collider other):同OnCollisionStay(Collision other)
f.OnTriggerExit(Collider other):同OnCollisionExit(Collision other)
注意:Collider具有一个参数isTrigger,当设置为false时,发生碰撞会触发刚体相应的函数(a、b或c),当设置为true的时候,abc则不会被触发,相应的d、e、f会被触发。
也就是说abc和def之间只有一组函数会被触发。
三、相关问题
1.有这样一种情形,物体A和B进行碰撞检测,A和B都有自己的OnTriggerEnter函数,当碰撞发生的时候,A和B的OnTriggerEnter函数触发顺序谁先谁后呢?
经过验证后发现,顺序是随机的。所以如果要执行一些有顺序的操作时最好将这些操作写到同一个物体的OnTriggerEnter函数中。