Unity NavMesh 判断路径是否可达和路径长度计算
最近我的独立游戏已经接近尾声,估计过一段时间就将要上架Steam了,还是有点小兴奋。希望大家能够多多支持:)
在设计人物移动的时候,我遇到一个问题,如图:
像这种高底层的寻路情况,如果道路被挡上,当我点击人物的时候,人物会直接跑到地下部分X的正下方。这是因为Unity默认寻路对这种上下分层的寻路规则是,寻找一个垂直方向的接近点。
这不是我想要的效果,像这种情况出现的时候,我希望能直接提示玩家,目标不可达,查了一下Unity的寻路API,并没有直接告诉我们,路径是否可达,于是这里有一个小技巧。
NavMeshPath path = new NavMeshPath();
bool lastStatus = alive.navAgent.enabled;
alive.navAgent.enabled = true;
if (alive.navAgent.isOnNavMesh)
{
alive.navAgent.CalculatePath(targetPos, path);
if (path.status == NavMeshPathStatus.PathComplete)
{
//可达
}
else{
//不可达
}
}
<