Unity NavMesh可用于实现A *算法吗?

问题描述 投票:3回答:2

我期待着为我正在进行的游戏使用A *寻路。 (我实际上正在为自己制作游戏以了解这一点)。我想知道Unity NavMesh如何与自定义A *算法一起使用,而不是使用NavMeshAgent。

c# unity3d a-star navmesh
2个回答
3
投票

No

或者至少,不容易(为什么你想要?)。

Unity的内置NavMesh旨在由Unity的内置NavMeshAgent使用内置的探路者使用。我不知道它使用什么算法,但A *实现通常在网络上运行。也就是说,边缘连接的节点。它不考虑内部体积(网格“面”)。

由于Unity的内置版本用于此类,因此很难直接访问任何信息以用于您自己的寻路算法。

如果你想编写自己的探路者,那么我也建议你编写自己的网格探测器。


1
投票

您可以执行以下操作:

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。

你有navmesh作为多边形。您可以定义搜索图并运行您选择的搜索算法。

© www.soinside.com 2019 - 2024. All rights reserved.