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;
}

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

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值