在Unity中,碰撞体(Collider)是用于检测和处理物理碰撞的组件。当两个游戏对象(GameObject)上的碰撞体组件发生重叠时,Unity的物理引擎会触发碰撞事件。

Unity提供的3D网格有以下六种:

  • BoxCollider:用于简单的矩形或立方体形状。
  • SphereCollider:用于球形物体。
  • MeshCollider:用于复杂形状,基于网格(Mesh)的碰撞体。这可能会比BoxCollider或SphereCollider更精确,但也可能更昂贵(性能上)。
  • CapsuleCollider:用于胶囊形状,像是拉长的圆柱体。
  • WheelCollider:专门用于车辆轮子的物理模拟。
  • TerrainCollider:与Terrain组件一起使用,用于地形碰撞。

控件具体属性:

  1. 添加碰撞体:要为一个游戏对象添加碰撞体,只需在Inspector窗口中为该对象添加一个碰撞体组件即可。你可以通过点击“Add Component”按钮,然后选择适当的碰撞体类型。

  2. 触发器:碰撞体还有一个“Is Trigger”选项。当这个选项被选中时,该碰撞体不会阻止其他碰撞体移动或进行物理交互,但它仍然可以触发事件(如OnTriggerEnterOnTriggerExitOnTriggerStay)。

  3. 刚体:要使碰撞体具有物理效果(如移动、旋转或受到力的影响),该游戏对象还需要一个刚体(Rigidbody)组件。没有刚体的碰撞体仅用于触发事件。

  4. 碰撞事件:Unity提供了多种碰撞事件,如OnCollisionEnterOnCollisionExitOnCollisionStay(对于非触发器碰撞体)和OnTriggerEnterOnTriggerExitOnTriggerStay(对于触发器碰撞体)。这些事件可以在游戏对象的脚本中重写,以定义当碰撞发生时应该执行的操作。

  5. 碰撞层(Collision Layers)和碰撞掩码(Collision Masks):Unity允许你定义不同的碰撞层,并设置每个碰撞体属于哪些层。通过碰撞掩码,你可以控制哪些层的碰撞体可以与另一个碰撞体发生碰撞。这允许你更精细地控制哪些对象应该相互碰撞。

  6. 物理材质(Physics Materials):你可以为碰撞体指定物理材质,以控制碰撞时的物理属性,如摩擦力和弹力。

接下来通过一个小案例帮助大家学习

1.在场景面板中创建两个带网格的物体

2.勾选是触发器

3.创建代码脚本

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class pengzhuang : MonoBehaviour
{
    private void OnTriggerEnter(Collider other)
    {
        Debug.Log("物体进入");
        Debug.Log("触碰到:"+other.gameObject.name);
    }

    private void OnTriggerExit(Collider other)
    {
        Debug.Log("触发结束");
    }

    private void OnTriggerStay(Collider other)
    {
        Debug.Log("接触中");
    }

}

4.将脚本拖入控件中,两个物体接触即可。

5.别忘了给两个空间添加重力组件。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐