Unity3d自学记录 关于NavMeshAgent中RemainingDistance为0的问题

制作关于自动导航的时候有用到NavMeshAgent这个组件,也有很详细的看了看文档的(看的很辛苦。。),但是由于人物自动寻路后是关掉NavMeshAgent组件的,由玩家控制,然后这个时候,判断什么时候关掉此组件出了小问题,那就是RemainingDistance(只读)为0,RemainingDistance表示的是当前位置距离目标位置的距离,然后我理所应当就写成:

if(_navMeshAgent.remainingDistance<=_navMeshAgent.stoppingDistance)
{
    _navMeshAgent.enabled=false;
}

然后运行后,角色就不动了,目测NavMeshAgent组件显示为able,然后我就输出了一下remainingDistance,发现结果是0,

这个时候只想到是不是判断的早了,而目的地此时还没有添加,然后我就输出了下目的地的坐标,对比了下,并没有什么关系。。

这个时候就很尴尬了。

然后通过百度大法,了解到路径是需要一个计算时间的,所以必须等到计算完之后,remainingDitance才会更新(瞬间石化)。

用我浅薄的英语知识翻译下就是:

是否依旧是在计算中没有准备好?

这个时候,我的代码就改成了:

if (!_navMeshAgent.pathPending&&_navMeshAgent.remainingDistance <= _navMeshAgent.stoppingDistance)
{
    _navMeshAgent.enabled = false;
}

然后就可行了。记录下(找到问题所在心里美滋滋)

你可能感兴趣的:(Unity3d)