我期待在我正在开发的游戏中使用 A* 寻路。(我实际上是在为自己制作一个游戏来了解这一点)。我想知道 Unity NavMesh 如何与自定义 A* 算法一起使用,而不是使用 NavMeshAgent。
问问题
1515 次
2 回答
3
不
或者至少,不容易(你为什么要这样做?)。
Unity 的内置 NavMesh 旨在供 Unity 的内置NavMeshAgent利用内置路径查找器使用。我不知道它使用什么算法,但 A* 实现通常在网络上运行。即,由边连接的节点。它不考虑内部体积(网格“面”)。
由于 Unity 的内置插件旨在用于此类用途,因此很难直接访问任何信息以用于您自己的寻路算法。
如果您想编写自己的探路者,那么我建议您也编写自己的网格。
于 2017-04-14T17:36:43.487 回答
3
您可以执行以下操作:
var navMesh = NavMesh.CalculateTriangulation() // get baked Navigation Mesh Data;
Vector3[] vertices = navMesh.vertices;
int[] polygons = navMesh.indices;
顶点(显然)是导航网格的顶点,由它们在统一空间中的位置指示。网格由多边形定义。多边形数组显示哪个顶点属于哪个多边形。
polygons:
0 0
1 0
2 1
3 1
4 0
5 1
该数组将指示索引为 0,1,4 的顶点属于多边形编号 0,索引为 2,3,5 的顶点属于多边形编号 1。
在那里你有你的导航网格作为多边形。您可以定义搜索图并运行您选择的搜索算法。
于 2019-04-08T08:32:50.240 回答