A* 算法 2D 游戏路径问题

A* Algorithm 2D Game Pathing issues

我决定拿起我以前的旧 2D 游戏引擎并继续研究它这是我第一次尝试为敌人实现一些基本的 AI,但我遇到了一些问题。这是一个 运行 关于我如何对待敌人的 AI 的评论。

我实现 A* 的方式是根据敌人的尺寸检查相邻的方块。因此,例如,如果我有一个 60X60 的敌人,我将检查这些维度内的相邻图块,敌人也可以有不同的大小。我运行遇到的问题如下:


假设敌人是黑色方块。它会检查它相邻的方块,并且可以移动到它前面的方块,因为它没有与这个方块中的任何物体发生碰撞。一旦它位于顶部方块中,它也可以在不发生碰撞的情况下穿过右侧方块。现在对于这种情况:


说当敌人在黑匣子的位置时调用A*算法。现在因为没有敌人在顶墙之间移动所需的大小,所以会发生碰撞,根据我的算法,这会导致敌人忽略这个方块。


所以我的问题是,解决此问题的最常见方法是什么。我可能缺少一些愚蠢的东西,但我想我会问。我希望我已经很好地解释了我遇到的问题,如果您需要任何说明,请直接询问。提前致谢。

我假设你正在用敌人大小的方块填充 A*

这是错误的,你需要单独喂食 cell/pixel 无论如何

所以填充时填充相邻的行(不是整个框)

如果没有释放整行那么根本不要填充它

您需要将一些附加信息编码到 A* 映射中,例如:

  • 它是水平线、垂直线或两条线
  • 如果是角位或方框位

了解您可以通过哪种方式成长

[备注]

A* 填充应始终符合您的运动能力