Unity3d NavMeshAgent 寻路卡住的问题

问题描述:当使用摇杆的按住一个方向不动的时候,在比较复杂的地形会定住不动,仿佛寻路没有生效。

打印问题:原来我们摇杆是每帧都会回调一次寻路,那么问题来了,每次调一次寻路除了效率问题貌似并没有什么问题啊。

navMeshAgent.SetDestination(targetPosition);
NavMeshPath path = new NavMeshPath();
navMeshAgent.CalculatePath(targetPosition, path);

打印发现原来targetPosition并没有改变,而导航时候还没有开始就已经结束了。但是如果用鼠标点一次就没有问题的。

 根本原因:貌似寻路导航需要计算时间的,而每帧的调用似乎就会变成导航还没有计算好就又要重新开始导航,所以表现结果就是按住摇杆不放就是原地不动了。

navMeshAgent调用setDestination 后,会有一个计算路径的时间,计算过程中pathPending为true. 在这个过程中remainingDistance一直为0.

https://www.cnblogs.com/waterdragon/p/4019066.html

 解决办法:1.摇杆的回调似乎可以加个时间间隔不用每帧去调用,2.可以判断targetPosition目标是否相同,如果目标相同则无需重新开始导航,3.可以把pathPending状态也加入是否已经寻路结束的判断,如果1和2已经处理了的话其实也无需再处理了吧。

你可能感兴趣的:(Unity3d)