本节要点
#1.碰撞事件简介
1.何为碰撞事件?
当一个用刚体控制的物体与另外一个物体碰撞时,就会触发碰撞事件。注:目标物体必须带有 Collider 组件。
碰撞 Collision
比如,一款射击类游戏,我们发射出了子弹,子弹是一个由刚体控制运动的物体,子弹射中了敌人,我们如何监测到这个碰撞??
#2.碰撞事件监测方法
1.OnCollisionEnter(Collision)
当碰撞开始时调用,只会调用该方法一次。
2.OnCollisionExit(Collision)
当碰撞结束时调用,只会调用该方法一次。
3.OnCollisionStay(Collision)
当碰撞进行中时,会持续调用该方法。
4.Collision 参数
碰撞,一个类。作用:用于传递碰撞信息。
Collision.gameObject 属性,与当前物体碰撞的物体的引用。
gameObject.name 属性,当前物体的名字。
场景视图
关键代码
public class CollisionCube : MonoBehaviour {
//谁碰撞了我??
//碰撞发生时候执行一次
void OnCollisionEnter(Collision coll)
{
//Debug.Log("Enter"+coll.gameObject.name);
if (coll.gameObject.name != "Ground")
{
Debug.Log("Enter" + coll.gameObject.name);
}
}
//碰撞离开后发生一次
void OnCollisionExit(Collision coll)
{
if (coll.gameObject.name != "Ground")
{
Debug.Log("Exit" + coll.gameObject.name);
}
}
//碰撞时持续发生
void OnCollisionStay(Collision coll)
{
if (coll.gameObject.name != "Ground")
{
Debug.Log("Stay" + coll.gameObject.name);
}
}
}
小结