algorithm - 建筑物的寻路(具有多个坐标的 A*)?

标签 algorithm path-finding

1) 我在想一个游戏,我们可以 build 需要很多方 block 的建筑物,例如 3x3。

所以在开始构建之前,我需要将角色移动到相邻的图 block 。那么有一种算法可以找到到建筑物区域的最短路径吗?

我们是否必须在区域建筑物的每个地 block 上使用 A * 并选择最短的?

编辑,例如:

map : enter image description here

对于这个例子,(0;0) 坐标位于具有此地标的图像的左上角: enter image description here 想象你的角色在 (0;0)

我正在寻找算法来将角色移动到最靠近图像左侧的建筑物。 [ 坐标:(1;2), (8,2), (1,10), (8, 10) ]

目标不是像“正常”情况那样的单个坐标,而是一个区域(有 4 个点)。

那么找到从单个起始坐标 [此处,(0,0)] 到区域 [此处 : (1;2), (8,2), ( 1,10), (8, 10) ] ?

我想要算法返回解决方案数组,所以如果像这个例子中的多种方式:[ (0,2), (1,1) ] ,不选择解决方案,只需给我所有等效的解决方案。

2) 与没有图 block 但只有坐标的 map 系统有同样的问题?

最佳答案

array/grid version of A*可以在目标区域中的任何命中停止,所以只需从起点开始增长,直到命中任何目标坐标,然后 backtrack .

是的,您也可以使用图形/矢量版本来执行此操作,您只需将任何障碍设置为节点即可。

如果您的瓷砖是(半)可步行的,那么 A* 的网格版本会更好,因为您可以利用它。您只需为每个瓷砖标记可步行区域和墙壁区域制作 2D 表示。像这样:

这也将允许您在您的建筑物中导航……但是我看不到您建筑物的内部,所以我敢打赌您直到现在才想到这一点。看看:

我正在使用 3D 网格,所以我得到了 3D 地形和建筑物也可以有等级......你只需要调整 View 以选择性地削减玩家上方的等级像这样:

levels

关于algorithm - 建筑物的寻路(具有多个坐标的 A*)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46037819/

相关文章:

c# - C# 中特定案例中的 AStar

algorithm - 是否有一些有效的算法可以在 O(1) 额外空间或最小额外空间中合并 k 个排序数组

java - hadoop中的矩阵乘法

python - 我如何将八个方向效果添加到我的 A 星算法而不是 4 个运动?

algorithm - 连续搜索空间的路径算法?

.net - 贝塞尔曲线算法 - 也许是规范样条曲线?

algorithm - 并行查找多个最近的射线段交叉点

c++ - 处理索引不断变化的数组的数据结构

java - 大 map 寻路

python - 如何限制 NetworkX 图中的某些路径?