0
点赞
收藏
分享

微信扫一扫

Area Listener 区域监听器


文章目录

  • ​​🎈 Area区域​​
  • ​​🔸 Cylinder Area​​
  • ​​🔸 Convex Area​​
  • ​​🎈 IsInArea接口​​
  • ​​🎈 AreaListener 区域监听器​​

🎈 Area区域

Area Listener 区域监听器_触发器

Area Listener 区域监听器_触发器_02

目前编写了两个类型的区域:

  • ​CylinderArea​​:圆柱形区域
  • ​ConvexArea​​:多边形区域

🔸 Cylinder Area

Area Listener 区域监听器_Unity_03


Area Listener 区域监听器_区域_04

  • ​Radius​​:圆柱的半径
  • ​Height​​:圆柱的高度

🔸 Convex Area

在Hierarchy层级窗口新建空节点,作为凸边形区域的顶点:

Area Listener 区域监听器_Unity_05

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

Area Listener 区域监听器_区域_06

​Height​​:凸边形区域的高度

Area Listener 区域监听器_监听器_07

每个顶点的​​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​​函数一直调用。


举报

相关推荐

0 条评论