[Unity] NavMeshAgent 判断是否到达目的地API

这篇博客探讨了如何通过检查NavMeshAgent组件的path.corners.Length属性来判断游戏对象是否已到达目的地。当长度为1时,意味着目标达成;大于1则表示仍在途中。
gameObjedct.GetComponent<NavMeshAgent>().path.corners.Length==1

等于1时:到达目的地

大于1时:未到达目的地

### Unity 2D 中 NavMesh 的使用教程 #### 寻路系统的初始化配置 为了使NavMesh能够在Unity 2D项目中正常工作,需安装专门针对二维环境设计的插件——NavMeshPlus[^1]。该工具允许开发者创建适用于平面游戏的地图数据结构。 #### 设置场景中的可行走区域 完成插件集成之后,在编辑器内通过标记地面或其他物体作为可通行路径来定义导航网格。这一步骤通常被称为“烘焙”,它会基于选定的对象自动生成内部使用的地图表示形式。对于任何希望被纳入到寻径计算范围内的静态几何体都应参与此过程。 #### 添加并配置NavMeshAgent组件 当准备就绪后,下一步是在打算执行自主运动逻辑的游戏对象上附加`NavMeshAgent`脚本。此时需要注意确保其属性已正确设定: - `enabled`: 此布尔值决定了代理是否处于活动状态,默认情况下应该设为`true`以便启动自动导航功能。 - `isOnNavMesh`: 这一选项验证了当前实体确实位于有效的导航表面上方,同样建议保持开启以防止潜在错误发生[^2]。 如果上述任一项未满足,则尝试调用诸如`SetDestination()`之类的方法将会触发异常警告消息。 ```csharp using UnityEngine; using UnityEngine.AI; public class SimpleMover : MonoBehaviour { private NavMeshAgent agent; void Start() { agent = GetComponent<NavMeshAgent>(); if (!agent.isOnNavMesh || !agent.enabled) { Debug.LogError("The agent is not on the NavMesh or it's disabled."); return; } Vector3 targetPosition = new Vector3(0f, 0f, 5f); // Example position. agent.SetDestination(targetPosition); } } ``` #### 封装API提高代码复用率 考虑到不同场合下可能频繁涉及到相似的操作模式,可以考虑编写辅助函数简化常用任务流程。例如,提供一个通用接口用于指定目的地坐标点而无需每次都重复相同的校验步骤。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值