碰撞器和触发器(Unity)

产生碰撞的条件

要产生碰撞必须为游戏对象添加刚体(Rigidbody)和碰撞器

  • 刚体可以让物体在物理影响下运动。
  • 碰撞体是物理组件的一类,它要与刚体一起添加到游戏对象上才能触发碰撞。如果两个刚体相互撞在一起,除非两个对象有碰撞体时物理引擎才会计算碰撞,在物理模拟中,没有碰撞体的刚体会彼此相互穿过。

物体发生碰撞的必要条件
两个物体都必须带有碰撞器(Collider),其中一个物体还必须带有Rigidbody刚体。

碰撞检测

Unity中检测碰撞的方法有两种

  • 触发器:只需要在检视面板中的碰撞器组件中勾选IsTrigger属性选择框。
  • 碰撞器:一群组件,它包含了很多种类,比如:Box Collider(盒碰撞体),Mesh Collider(网格碰撞体)等,这些碰撞器应用的场合不同,但都必须加到GameObjecet身上。
  • 碰撞器种类
    Box Collider:最常用的立方体碰撞器。
    Sphere Collider:球形碰撞器,它的效率是最高的,因为球体的直径是相同的。
    Capsule Collider:胶囊体碰撞器,适用于控制的主角。
    Wheel Collider:轮胎碰撞器,就像汽车的4个轮胎一样在地面上跑。
    Terrain Collider:地形碰撞器,可以在地形编辑时减少网格的数量,这样就能优化效率。
    MeshCollider:网格碰撞器,根据美术人员的模型网络生成的碰撞器,其效率也是最低的。建议项目中不要使用它,或者可以让美术人员做一个专门用来检测碰撞的简易网格。

区别

  • 触发器:有三种方法,分别是OnTriggerEnter,OnTriggerStay,OnTriggerExit 触发器一般是触发某种事物时使用,不带有碰撞的物理效果。
void OnTriggerEnter(Collider other)
{ 
    Debug.Log("开始触发");
      
}
void OnTriggerStay(Collider other)
{ 
    Debug.Log("正在触发"); 
}
void OnTriggerExit(Collider other)
{ 
    Debug.Log("结束触发");
}
  • 碰撞器:有三种方法,分别是OnCollisionEnter,OnCollisionStay,OnCollisionExit 碰撞器一般是碰撞某种事物时使用,带有碰撞的物理效果。
void OnCollisionEnter(Collision other)
{ 
    Debug.Log("开始碰撞");  
}
void OnCollisionStay(Collision other)
{ 
    Debug.Log("正在碰撞");     
}
void OnCollisionExit(Collision other)
{ 
    Debug.Log("结束碰撞");
}
    原文作者:yyyyygq
    原文地址: https://blog.csdn.net/y18771025420/article/details/104674852
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞