navmeshObstacle 卡住

2015年01月27日 09:25 0 点赞 0 评论 更新于 2025-11-21 15:30

在进行 Unity 自动寻路开发时,我遇到了 NavMeshObstacle 导致物体卡住的问题,下面将详细阐述问题现象、原因及解决办法。

问题现象

我为一个 GameObject 挂载了 NavMeshAgent 组件,使其能够朝着指定的目标点自动寻路。同时,在目标点前方创建了一堵墙,这堵墙由几个带有 NavMeshObstacle 组件的圆柱体构成。运行程序后,发现 GameObject 无法绕过这堵墙到达目标点,而是卡在了墙的外面。

这不禁让我产生疑问:NavMeshObstacle 的作用是动态增加障碍,那么 NavMeshAgent 难道不能实现躲避动态障碍的寻路吗?还是我在某些设置上存在问题?

场景描述

  • 目标:用黑色的长方体表示。
  • 动态墙壁:位于中间位置,由带有 NavMeshObstacle 组件的圆柱体动态生成。
  • 寻路物体:用外面的正方体表示,该物体卡在了墙的外面。

问题原因及解决办法

实际上,NavMeshObstacle 卡住问题的原因很简单。只需要在 NavMeshObstacle 组件中勾选 Carve 选项即可。勾选该选项后,NavMeshAgent 就能感知到动态生成的障碍,并重新规划路径,从而绕过墙到达目标点。

通过以上操作,就可以解决 NavMeshObstacle 导致物体卡住的问题,实现更灵活的自动寻路功能。

作者信息

feifeila

feifeila

共发布了 3994 篇文章