Area Listener 区域监听器

本文介绍了一种基于Unity的游戏开发中的区域检测系统,包括圆柱形区域CylinderArea和多边形区域ConvexArea的实现。此外,还提供了一个IsInArea接口来判断目标点是否位于这些区域内,并通过AreaListener来监听物体进入、停留和退出区域的事件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


🎈 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函数一直调用。

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

CoderZ1010

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值