当所有正常路径都被遮挡时,找到通过障碍物的最短路径


10

我正在进行塔防,并且已经完成基本的寻路工作,但是遇到了问题。

我想使路径可阻塞,并且当发生阻塞时,跑步者将攻击阻塞塔。

因此,我需要的是一种找到最短路径的方法,更重要的是,该路径中的塔数最少。

我怎么做?


1
那不是您的步行路径内的碰撞检测吗?
Prix

由于阻挡塔是可破坏的,因此实际上存在一条路径。穿越它们的成本比沿着畅通无阻的道路要高得多。(请参见下面来自coderanger的回答)
bummzack 2010年

Answers:


21

在您的道路上,计分只是使其得分,所以通过塔楼的费用与通过大量瓷砖的费用相同。通常,它将尝试绕过它们,但如果没有这样的路径,输出仍将遇到最少数量的障碍。您可以调整惩罚,以便有时它们也可以通过,而不是如果您愿意也可以绕过地图。


很想看看这个实现的代码示例,听起来简单而健壮
DFectuoso 2010年

3
A *算法(en.wikipedia.org/wiki/A * _search_algorithm)适用于路径成本。只需增加贯穿塔的网段的成本即可。然后,您的代理将尝试避开塔楼,或者如果攻击塔楼“便宜”,他们将攻击它。A *算法的想法是使成本最小化,因此您只需调整路径成本就可以实现所需的目标……
bummzack 2010年

这是我从未想到的绝佳解决方案,谢谢!
jhocking 2011年

请注意:在明显阻塞路径的情况下,给塔节点巨大的移动成本,同时又不增加用于A *算法的估算值,这意味着您的代理在决定中断之前会检查障碍物所在的每个节点,通过点。根据节点和代理的数量,这可能会使算法过慢。
Martin Sojka
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.