当两个非触发碰撞体用于处理对象物理碰撞的不可见形状。碰撞体不需要与对象的网格完全相同形状 - 粗略的近似值通常效率更高,并且在游戏玩法中难以区分。 更多信息
参见 术语表接触时,会发生碰撞事件。
碰撞事件当物理引擎检测到两个游戏对象的碰撞体接触或重叠时,就会发生碰撞,前提是至少有一个具有刚体组件并且正在运动。 更多信息
参见 术语表的一些示例用法包括
使用碰撞事件主要涉及以下 API 函数
Collider.OnCollisionEnter
:当两个碰撞体首次接触时,Unity 会在每个碰撞体上调用此函数。Collider.OnCollisionStay
:当两个碰撞体接触时,Unity 会在每次物理更新时在每个碰撞体上调用此函数。Collider.OnCollisionExit
:当两个碰撞体停止接触时,Unity 会在每个碰撞体上调用此函数。对于碰撞事件,至少一个涉及的对象必须具有动态物理体(即,具有禁用Is Kinematic属性的刚体或关节体)。如果碰撞中的两个游戏对象Unity 场景中的基本对象,可以表示角色、道具、场景、摄像机、路径点等。游戏对象的特性由附加在其上的组件定义。 更多信息
参见 术语表都是运动学物理体,则碰撞不会调用OnCollision
函数。
以下示例在 Unity 调用每个函数时将消息打印到控制台。
using UnityEngine;
using System.Collections;
public class DoorObject : MonoBehaviour
{
// “other” refers to the collider that is touching this collider
void OnCollisionEnter (Collider other)
{
Debug.Log ("A collider has made contact with the DoorObject Collider");
}
void OnCollisionStay (Collider other)
{
Debug.Log ("A collider is in contact with the DoorObject Collider");
}
void OnCollisionExit (Collider other)
{
Debug.Log ("A collider has ceased contact with the DoorObject Collider");
}
}
有关OnCollision
事件的实际应用示例,请参阅碰撞体事件示例脚本。