本節(jié)要點
#1.碰撞事件簡介
1.何為碰撞事件寸爆?
當(dāng)一個用剛體控制的物體與另外一個物體碰撞時,就會觸發(fā)碰撞事件盐欺。注:目標物體必須帶有 Collider 組件赁豆。
碰撞 Collision
比如,一款射擊類游戲冗美,我們發(fā)射出了子彈魔种,子彈是一個由剛體控制運動的物體粉洼,子彈射中了敵人节预,我們?nèi)绾伪O(jiān)測到這個碰撞叶摄??
#2.碰撞事件監(jiān)測方法
1.OnCollisionEnter(Collision)
當(dāng)碰撞開始時調(diào)用安拟,只會調(diào)用該方法一次蛤吓。
2.OnCollisionExit(Collision)
當(dāng)碰撞結(jié)束時調(diào)用,只會調(diào)用該方法一次去扣。
3.OnCollisionStay(Collision)
當(dāng)碰撞進行中時柱衔,會持續(xù)調(diào)用該方法。
4.Collision 參數(shù)
碰撞愉棱,一個類唆铐。作用:用于傳遞碰撞信息。
Collision.gameObject 屬性奔滑,與當(dāng)前物體碰撞的物體的引用艾岂。
gameObject.name 屬性,當(dāng)前物體的名字朋其。
場景視圖
關(guān)鍵代碼
public class CollisionCube : MonoBehaviour {
//誰碰撞了我王浴??
//碰撞發(fā)生時候執(zhí)行一次
void OnCollisionEnter(Collision coll)
{
//Debug.Log("Enter"+coll.gameObject.name);
if (coll.gameObject.name != "Ground")
{
Debug.Log("Enter" + coll.gameObject.name);
}
}
//碰撞離開后發(fā)生一次
void OnCollisionExit(Collision coll)
{
if (coll.gameObject.name != "Ground")
{
Debug.Log("Exit" + coll.gameObject.name);
}
}
//碰撞時持續(xù)發(fā)生
void OnCollisionStay(Collision coll)
{
if (coll.gameObject.name != "Ground")
{
Debug.Log("Stay" + coll.gameObject.name);
}
}
}
小結(jié)
Unity API.png