我目前正在研究游戏项目的寻路部分。烘烤我的导航网格时出现问题 - 它没有涵盖我想要步行的所有区域。Unity 3D导航网格烘烤没有覆盖所有区域
这是问题的一个形象:
我怎么能覆盖一个导航网格的整个区域,因此是代理人可步行?
我目前正在研究游戏项目的寻路部分。烘烤我的导航网格时出现问题 - 它没有涵盖我想要步行的所有区域。Unity 3D导航网格烘烤没有覆盖所有区域
这是问题的一个形象:
我怎么能覆盖一个导航网格的整个区域,因此是代理人可步行?
不幸的是,Unity的基于导航网格的导航系统只能用于与y轴对齐的地形 - 也就是说,世界的y轴用作向上矢量,并且使用地形的斜率计算作为参考。
只有你的球形物体的顶部被认为是可行走的原因是因为如果你认为y轴是向上的矢量,那么其余的地形的斜率大于navmesh烘烤设置所允许的。
解决此问题的唯一方法是编写自定义解决方案 - 但嘿,幸运的是not the first one to pose such a question。普遍接受的方法是使用具有自定义启发式功能的A* algorithm(基于网格的顶点)来计算到目的地的最短路径。
这里的a good tutorial on how to implement A* in Unity,这将给你一个基本的理解,所以你可以计算出如何将算法应用到自身环绕的地形。如果你没有计划编写你自己的解决方案,还有an existing A* asset for sale on the Unity Asset Store(免费版本也可用),这被认为是Unity自己的导航系统的一个可靠的改进,并且可以适用于非垂直地形,如你的一些调整。
希望这会有所帮助!如果您有任何问题,请告诉我。