文章目录
- 🎈 Area区域
- 🔸 Cylinder Area
- 🔸 Convex Area
- 🎈 IsInArea接口
- 🎈 AreaListener 区域监听器
🎈 Area区域


目前编写了两个类型的区域:
-
CylinderArea:圆柱形区域 -
ConvexArea:多边形区域
🔸 Cylinder Area


-
Radius:圆柱的半径 -
Height:圆柱的高度
🔸 Convex Area
在Hierarchy层级窗口新建空节点,作为凸边形区域的顶点:

将以上顶点添加到Vertex Points顶点数组中:

Height:凸边形区域的高度

每个顶点的Position Handle可以拖动编辑。
🎈 IsInArea接口
抽象接口IsInArea,用于判断目标点是否在区域中,各类型区域都有各自的实现。
public abstract bool IsInArea(Vector3 targetPos);
🎈 AreaListener 区域监听器
AreaListener用于模拟Trigger的OnEnter、OnStay、OnExit事件监听。
例如监听物体target是否进入、停留、退出该区域:
public class Example : MonoBehaviour
{
public Transform target;
void Start()
{
GetComponent<ConvexArea>().Listen(target)
.OnEnter(() => Debug.Log("进入区域"))
.OnStay(() => Debug.Log("停留在该区域"))
.OnExit(() => Debug.Log("退出区域"));
}
}
target停留在区域中时OnStay函数一直调用。









