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

时间:2015-04-20 13:41:23

标签: algorithm 2d monogame tile

我决定在当天从后面拿起旧的2D游戏引擎并继续工作。这是我第一次尝试为敌人实施一些基本的AI并且我遇到了一些问题。这是关于我如何为敌人处理AI的问题。

  • 如果玩家在敌人的某个范围内,则只需检查玩家是向上还是向下,向左或向右并调整它的坐标,敌人就会向玩家移动因此。

  • 如果敌人遇到妨碍他向玩家方向移动的障碍物,那么我会调用我的A *算法来检测到玩家的最短路径并在障碍物周围移动。

    < / LI>
  • 我正在检查是否每一帧都不再阻挡敌人,如果是,那么再次调用A *算法来调整玩家的移动位置。

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

enter image description here


说敌人是黑方。它检查它的相邻瓷砖,并且可以移动到它前面的正方形,因为它不会与该正方形中的任何物体发生碰撞。一旦它在顶部正方形,它可以适合通过正方形而不会发生碰撞。现在为这种情况:

enter image description here


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


所以我的问题是,围绕这个问题最常见的方法是什么。可能有些傻我想念,但我想我会问。我希望我能解释一下我遇到的问题,如果你需要任何澄清,请问。提前谢谢。

1 个答案:

答案 0 :(得分:0)

我假设您正在通过敌人大小的块填充A *

这是错误的,你需要通过单个单元/像素提供任何东西

因此填充时填充相邻的行(不是整个框)

如果没有自由整行,那么根本不填写

A* with block filling

您需要将一些额外的信息编码到A *地图,例如:

  • 它是水平,垂直或两行
  • 如果是角落或盒子位置

知道你可以成长的方式

<强> [注释]

A *填充应始终与您的移动能力相匹配