在许多 A* Start Pathfinding 教程中,最后一部分总是这样;
保存路径。从目标方格向后工作,从每个方格到其父方格,直到到达起始方格。那是你的道路。
我真的不明白我应该做什么来在我的 A * 星寻路中实现这一点。我正在使用的当前方法如下;我保存路径,反转它,再次运行路径查找器,但我通过检查它们是否在原始路径列表中来获取相邻节点,如果它们在列表中则添加它们。
这种方法的问题是我有时会遇到一些奇怪的路径。
在许多 A* Start Pathfinding 教程中,最后一部分总是这样;
保存路径。从目标方格向后工作,从每个方格到其父方格,直到到达起始方格。那是你的道路。
我真的不明白我应该做什么来在我的 A * 星寻路中实现这一点。我正在使用的当前方法如下;我保存路径,反转它,再次运行路径查找器,但我通过检查它们是否在原始路径列表中来获取相邻节点,如果它们在列表中则添加它们。
这种方法的问题是我有时会遇到一些奇怪的路径。
您只需要为您访问的节点保留一张“来自”地图。
当您到达目标时,您可以通过在节点上递归轮询“来自”直到该节点成为源节点来返回源节点。
请注意,这将为您提供相反的路径。您只需反转此路径,即可获得从源到目标的最短路径。
您不必再次运行最短路径算法。
如果您还没有阅读此内容,请查看: http ://theory.stanford.edu/~amitp/GameProgramming/
这是我为游戏实现 A* 时的资源。你提到的“父母”广场不是一个好名字。正如 turbovince 提到的,它不是“父”节点,而是您来自哪里。每个节点都有一个引用,因此当您最终到达目标时,您应该能够将这些引用遍历回原点。