Unity Navmesh代理被阻止

问题描述

我有一个项目,正在使用NavMesh Agent和Obstacles作为游戏的核心机制。我已经将NavMeshSurface烘焙到地面,以便特工可以找到到达终点的方式。玩家将障碍物放置在特工的前面,以阻止其前进。如果障碍被完全阻止并且没有可用的路径到达终点,我会努力使障碍对障碍造成损害。 注意:(通过完全封锁,我的意思是他们只是站在一个地方,什么也不做。如果发生这种情况,我希望特工开始攻击障碍物,以便以自己的方式到达终点) 任何有关如何检查是否有可用路径的建议都深表感谢!预先谢谢你

解决方法

欢迎来到Svetoslav社区。​​ p>

NavMeshAgent上进行快速搜索以检查端点是否可达 ,即可立即得到答案(https://answers.unity.com/questions/1254520/how-to-check-if-agent-destination-can-be-reached.html (由Arcana96回答)

有一个称为CalculatePath的方法,该方法可让您在移动代理之前检查某个位置是否可达。这里是文档: https://docs.unity3d.com/ScriptReference/NavMeshAgent.CalculatePath.html

使用CalculatePath方法将返回NavMeshPath对象。它可用于检查端点是否可达(请参阅文档)。获得肯定的结果后,您可以将该路径设置为NavMeshAgent的{​​{1}}属性。