zl程序教程

您现在的位置是:首页 >  Java

当前栏目

Area Listener 区域监听器

2023-02-18 16:42:18 时间

? Area区域

Package Manager

SKFramework

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

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

? Cylinder Area

Cylinder Area - 1

Cylinder Area - 2

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

? Convex Area

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

Convex Area Vertex

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

Convex Area - 1

Height:凸边形区域的高度

Convex Area - 2

每个顶点的Position Handle可以拖动编辑。

? IsInArea接口

抽象接口IsInArea,用于判断目标点是否在区域中,各类型区域都有各自的实现。

public abstract bool IsInArea(Vector3 targetPos);

? AreaListener 区域监听器

AreaListener用于模拟Trigger的OnEnterOnStayOnExit事件监听。

例如监听物体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函数一直调用。