发生碰撞的条件
- 发生碰撞的物体一定要有碰撞体
- 主动运行的物体一定要有刚体(Rigidbody)
触发碰撞的方法
// 碰撞器
private void OnCollisionEnter(Collision collision)
{
if (collision.gameObject.tag == "wall01")
{
print(collision.gameObject.name+":"+" OnCollisionEnter");
}
}
private void OnCollisionStay(Collision collision)
{
if (collision.gameObject.tag == "wall01")
{
print(collision.gameObject.name + ":" + "OnCollisionStay");
}
}
private void OnCollisionExit(Collision collision)
{
if (collision.gameObject.tag == "wall01")
{
print(collision.gameObject.name + ":" + "OnCollisionExit");
}
}
//触发器
private void OnTriggerEnter(Collider other)
{
if (other.gameObject.tag == "wall01")
{
Debug.Log("这是触发器Enter");
}
}
private void OnTriggerStay(Collider other)
{
if (other.gameObject.tag == "wall01")
{
Debug.Log("这是触发器Stay");
}
}
private void OnTriggerExit(Collider other)
{
if (other.gameObject.tag == "wall01")
{
Debug.Log("这是触发器Exit");
}
}
设置触发器
勾选“是触发器”(is Trigger)
碰撞体和触发器的区别
1.是否发生物理碰撞:
碰撞器顾名思义会导致物理之前的物理碰撞,但触发器不会,不引起物理碰撞,只检测物体进入或离开触发区域。
碰撞器由于发生物理碰撞所以会阻止物体穿过进而发生相互作用,但触发器可以自由进出触发区域。
2.使用场景:
所以一般情况下当物体之间实际碰撞时使用碰撞器,只需要判断进出某个区域则用触发器