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

Unity提供的3D网格有以下六种:
BoxCollider:用于简单的矩形或立方体形状。SphereCollider:用于球形物体。MeshCollider:用于复杂形状,基于网格(Mesh)的碰撞体。这可能会比BoxCollider或SphereCollider更精确,但也可能更昂贵(性能上)。CapsuleCollider:用于胶囊形状,像是拉长的圆柱体。WheelCollider:专门用于车辆轮子的物理模拟。TerrainCollider:与Terrain组件一起使用,用于地形碰撞。
控件具体属性:
-
添加碰撞体:要为一个游戏对象添加碰撞体,只需在Inspector窗口中为该对象添加一个碰撞体组件即可。你可以通过点击“Add Component”按钮,然后选择适当的碰撞体类型。
-
触发器:碰撞体还有一个“Is Trigger”选项。当这个选项被选中时,该碰撞体不会阻止其他碰撞体移动或进行物理交互,但它仍然可以触发事件(如
OnTriggerEnter、OnTriggerExit和OnTriggerStay)。 -
刚体:要使碰撞体具有物理效果(如移动、旋转或受到力的影响),该游戏对象还需要一个刚体(Rigidbody)组件。没有刚体的碰撞体仅用于触发事件。
-
碰撞事件:Unity提供了多种碰撞事件,如
OnCollisionEnter、OnCollisionExit、OnCollisionStay(对于非触发器碰撞体)和OnTriggerEnter、OnTriggerExit、OnTriggerStay(对于触发器碰撞体)。这些事件可以在游戏对象的脚本中重写,以定义当碰撞发生时应该执行的操作。 -
碰撞层(Collision Layers)和碰撞掩码(Collision Masks):Unity允许你定义不同的碰撞层,并设置每个碰撞体属于哪些层。通过碰撞掩码,你可以控制哪些层的碰撞体可以与另一个碰撞体发生碰撞。这允许你更精细地控制哪些对象应该相互碰撞。
-
物理材质(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.别忘了给两个空间添加重力组件。

更多推荐
所有评论(0)