当旅行物体不是一个点时,什么是实现寻路的好方法?

时间:2014-04-08 13:36:15

标签: game-physics

我正在玩一个充满岛屿的海洋游戏。我想要一艘船(有一个大的矩形边界框)在这个海域航行而不会撞到任何岛屿。在某些情况下,岛屿聚集在一起非常紧密(并且有很多岛屿)。理想情况下,我想最终得到船只可以遵循以避开岛屿的航路点列表。

在我发现的大多数寻路文献中,路径被认为是一个点 - 在我的情况下并非如此(它是一个大矩形)。我可以应用于这种情况的优秀算法是什么? A *搜索适用于这种情况吗?

2 个答案:

答案 0 :(得分:1)

您需要将“正常”拓扑路径查找与几何约束相结合。

这可以通过首先定义网络拓扑然后检查链接是否适用于船舶来完成。

作为第一次切割,假设您定义了一个合适分辨率的正方形网格,比如船的宽度。 从岛上移除小于船宽一半的所有顶点。

在网格中的每个顶点和邻居之间创建一个链接,包括对角线。

(*)对于每个链接,创建由船沿着链接直线创建的矩形。删除与岛屿重叠的任何内容。

现在你留下了一个“可导航”的网络 - 不允许转弯半径等。

您可以使用网格分辨率或类型来获得更好的效果。

($)此外,初始链接集可以包含非相邻顶点之间的链接,从而提供更平滑的路径。 除非我们在初始集合中允许相当长的链接,否则这种方法仍然会给出相当不平衡的路径。

因此,采取生成的路径并尝试查看该路径中的哪些节点可以在不与岛屿冲突的情况下被删除,如步骤(*)所示。也许这意味着我们不需要打扰步骤($)或任何对角线?

答案 1 :(得分:0)

我会在水中的岛屿周围放置航点标记,然后运行标准的路径寻找算法。