A* 算法 2D 游戏路径问题
A* Algorithm 2D Game Pathing issues
我决定拿起我以前的旧 2D 游戏引擎并继续研究它这是我第一次尝试为敌人实现一些基本的 AI,但我遇到了一些问题。这是一个 运行 关于我如何对待敌人的 AI 的评论。
如果玩家在敌人的特定 运行ge 范围内,敌人会向玩家移动,只需检查他是在敌人的上方还是下方,左侧还是右侧播放器并相应地调整它的坐标。
如果敌人遇到障碍物阻止他向玩家方向移动,那么我调用我的 A* 算法来检测到玩家的最短路径并绕过障碍物。
我正在检查敌人是否不再每帧都被阻挡,如果是则再次调用 A* 算法以调整玩家的移动位置。
我实现 A* 的方式是根据敌人的尺寸检查相邻的方块。因此,例如,如果我有一个 60X60 的敌人,我将检查这些维度内的相邻图块,敌人也可以有不同的大小。我运行遇到的问题如下:
假设敌人是黑色方块。它会检查它相邻的方块,并且可以移动到它前面的方块,因为它没有与这个方块中的任何物体发生碰撞。一旦它位于顶部方块中,它也可以在不发生碰撞的情况下穿过右侧方块。现在对于这种情况:
说当敌人在黑匣子的位置时调用A*算法。现在因为没有敌人在顶墙之间移动所需的大小,所以会发生碰撞,根据我的算法,这会导致敌人忽略这个方块。
所以我的问题是,解决此问题的最常见方法是什么。我可能缺少一些愚蠢的东西,但我想我会问。我希望我已经很好地解释了我遇到的问题,如果您需要任何说明,请直接询问。提前致谢。
我假设你正在用敌人大小的方块填充 A*
这是错误的,你需要单独喂食 cell/pixel 无论如何
所以填充时填充相邻的行(不是整个框)
如果没有释放整行那么根本不要填充它
您需要将一些附加信息编码到 A* 映射中,例如:
- 它是水平线、垂直线或两条线
- 如果是角位或方框位
了解您可以通过哪种方式成长
[备注]
A* 填充应始终符合您的运动能力
我决定拿起我以前的旧 2D 游戏引擎并继续研究它这是我第一次尝试为敌人实现一些基本的 AI,但我遇到了一些问题。这是一个 运行 关于我如何对待敌人的 AI 的评论。
如果玩家在敌人的特定 运行ge 范围内,敌人会向玩家移动,只需检查他是在敌人的上方还是下方,左侧还是右侧播放器并相应地调整它的坐标。
如果敌人遇到障碍物阻止他向玩家方向移动,那么我调用我的 A* 算法来检测到玩家的最短路径并绕过障碍物。
我正在检查敌人是否不再每帧都被阻挡,如果是则再次调用 A* 算法以调整玩家的移动位置。
我实现 A* 的方式是根据敌人的尺寸检查相邻的方块。因此,例如,如果我有一个 60X60 的敌人,我将检查这些维度内的相邻图块,敌人也可以有不同的大小。我运行遇到的问题如下:
假设敌人是黑色方块。它会检查它相邻的方块,并且可以移动到它前面的方块,因为它没有与这个方块中的任何物体发生碰撞。一旦它位于顶部方块中,它也可以在不发生碰撞的情况下穿过右侧方块。现在对于这种情况:
说当敌人在黑匣子的位置时调用A*算法。现在因为没有敌人在顶墙之间移动所需的大小,所以会发生碰撞,根据我的算法,这会导致敌人忽略这个方块。
所以我的问题是,解决此问题的最常见方法是什么。我可能缺少一些愚蠢的东西,但我想我会问。我希望我已经很好地解释了我遇到的问题,如果您需要任何说明,请直接询问。提前致谢。
我假设你正在用敌人大小的方块填充 A*
这是错误的,你需要单独喂食 cell/pixel 无论如何
所以填充时填充相邻的行(不是整个框)
如果没有释放整行那么根本不要填充它
您需要将一些附加信息编码到 A* 映射中,例如:
- 它是水平线、垂直线或两条线
- 如果是角位或方框位
了解您可以通过哪种方式成长
[备注]
A* 填充应始终符合您的运动能力