1)我在想一个游戏,我们可以建造多个瓷砖的建筑物,例如3x3。
所以在开始构建之前,我需要将角色移动到相邻的平铺。所以有一个算法可以找到到建筑区域的最短路径?
我们是否有义务在该地区建筑的每个瓷砖上使用*并选择最短的?
编辑,例如:
地图:
algorithm - 寻路到建筑物(具有多个坐标的A *)?-LMLPHP
对于这个例子,(0;0)坐标在图像的左上角,带有这个地标:
algorithm - 寻路到建筑物(具有多个坐标的A *)?-LMLPHP
想象你的角色在(0;0)
我在寻找一种算法,将字符cloest移动到图像的左侧bulding[坐标:(1;2),(8,2),(1,10),(8,10)]
目标不是像“正常”情况下的单一坐标,而是一个AERA(有4个点)。
那么,从一个起始坐标[这里,(0,0)]到一个区域[这里:(1;2),(8,2),(1,10),(8,10)],找到最接近位置(不包括对角线)的最佳方法是什么?
我想要算法返回解的数组,所以在多个方法的情况下,例如:[(0,2),(1,1)],没有选择一个解,只要给我所有等价的解。
2)同样的问题,地图系统没有平铺,只是坐标?

最佳答案

好的,array/grid version of A*可以在目标区域的任何命中时停止,所以只需从起始点增长到命中任何目标坐标,然后backtrack
是的,你也可以通过图形/向量版本来实现,你只需将任何障碍物设置为节点。
如果你的瓷砖是(半)可行走的,那么网格版的A*更好,因为你可以利用它只需对每个瓷砖标记的可行走区域和墙区域进行二维表示。像这样的:
Algorithm Trax Winning Condition
它也可以让你在你的建筑中导航但我看不到你的建筑内部,所以我敢打赌,你直到现在才想到这一点。看看:
2D Diamond (isometric) map editor一些内部建筑的想法
我使用三维网格,所以我得到了三维地形和建筑物也可以有水平您只需要调整视图,以选择性地降低播放器上的级别,如下所示:
algorithm - 寻路到建筑物(具有多个坐标的A *)?-LMLPHP

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

10-12 23:55