Unity - NavmeshAgent.Move() 第一次移动时报错 “Move“ can only be called on an active agent that has be

个人遇到问题时,经过测试推断:

首先在调用Move之前需要确保NavmeshAgent.enabled = true

但当我有效执行了NavmeshAgent.enabled = true 再进行move时也会报错

于是增加了一个条件 

        if(NavmeshAgent.enabled == true)  NavmeshAgent.Move()

猜测原因可能是在同一帧里先执行NavmeshAgent.enabled = true,在执行Move时,其实NavmeshAgent的enabled还并没有真正设为true或者是NavmeshAgent.enabled设为true了但是Navmesh需要等待下一帧才会刷新agent在导航中的状态,因此当帧调用Move会报错agent的状态还没有被正确刷新到导航中

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
navMeshAgent.isOnNavMesh是一个bool类型的属性,用于判断一个代理是否当前绑定在navmesh上。在Unity中,我们可以使用以下代码来检查一个代理是否在navmesh上: NavMeshPath path = new NavMeshPath(); bool lastStatus = navMeshAgent.enabled; navMeshAgent.enabled = true; if (navMeshAgent.isOnNavMesh) { navMeshAgent.CalculatePath(targetPos, path); if (path.status == NavMeshPathStatus.PathComplete) { // 代理可达目标位置 } else { // 代理无法到达目标位置 } } 在这段代码中,我们首先创建了一个NavMeshPath对象,用于计算代理的路径。然后,我们将代理的enabled属性设为true,以确保代理处于活动状态。接下来,我们使用navMeshAgent.isOnNavMesh来判断代理是否当前绑定在navmesh上。如果是,则使用navMeshAgent.CalculatePath来计算代理的路径。如果路径的status属性为PathComplete,则表示代理可以到达目标位置,否则表示代理无法到达目标位置。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Unity NavMeshAgent参数及API](https://blog.csdn.net/qq_37701948/article/details/105875160)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [Unity NavMesh 判断路径是否可达和路径长度计算](https://blog.csdn.net/WangHaoDiablo/article/details/114657588)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值