Unity 碰撞检测

unity碰撞检测
(1)
检测Trigger:双方都有Collider。双方至少有一个Rigidbody(任意一方都可以),有一个Trigger(任意一方都可以).

若只有一个Rigidbody,则碰撞时,该Rigidbody一定要是运动的。

碰撞后发出的OnTriggerEnter,OnTriggerStay,OnTriggerExit都可以在双方所附加的脚本上接收。其中的参数Collider other是碰撞的另一方的Collider

(2)
检测Collision:双方都没有Trigger。双方至少有一个非kinematic的Rigidbody。

若只有一个Rigidbody,则碰撞时,该Rigidbody一定要是运动的。

碰撞后发出的OnCollisionEnter,OnCollisionStay,OnCollisionExit都可以在双方所附加的脚本上接收。其中的参数Collision collision的各个属性collider,gameObject,rigidbody(若无则为null),transform,均为碰撞另一方的属性。

foreach (ContactPoint contact in collision.contacts) {
print(contact.thisCollider.name + " hit " + contact.otherCollider.name);
Debug.DrawRay(contact.point, contact.normal, Color.white);
}

contact.thisCollider代表自己的碰撞器,contact.otherCollider代表对方碰撞器
 
另外检测碰撞时,可以认为CharacterController是非kinematic的Rigidbody和Collider的组合

你可能感兴趣的:(Unity 碰撞检测)