【发布时间】:2015-04-20 13:41:22
【问题描述】:
我决定从以前开始使用我的旧 2D 游戏引擎并继续开发它这是我第一次尝试为敌人实现一些基本的 AI,但我遇到了一些问题。以下是我如何为敌人处理 AI。
如果玩家在敌人的一定范围内,敌人会向玩家移动,只需检查他是在玩家的上还是下、左还是右,并相应地调整它的坐标。
-
如果敌人撞到阻碍他向玩家方向移动的障碍物,那么我调用 My A* 算法来检测到玩家的最短路径并绕过障碍物移动。
我正在检查敌人是否不再每帧都被阻挡,然后是否再次调用 A* 算法来调整玩家的移动位置。
我实现 A* 的方式是根据敌人的尺寸检查相邻的方格。因此,例如,如果我有一个 60X60 的敌人,我将检查这些维度内的相邻图块,敌人也可以是不同大小的。我遇到的问题如下:
假设敌人是黑色方块。它检查它的相邻瓷砖并可以移动到它前面的方块,因为它没有与这个方块中的任何物体发生碰撞。一旦它在顶部正方形中,它也可以在不发生碰撞的情况下穿过正确的正方形。现在针对这种情况:
假设当敌人在黑盒子的位置时调用A*算法。现在因为没有敌人在顶墙之间移动所需的大小,所以会发生碰撞,根据我的算法,这将导致敌人忽略这个块。
所以我的问题是,解决这个问题的最常见方法是什么。我可能缺少一些愚蠢的东西,但我想我会问。我希望我已经解释了我遇到的问题,如果您需要任何澄清,请询问。提前致谢。
【问题讨论】:
-
我个人不明白问题出在哪里,但是,我认为您使用算法的方式可能会导致奇怪的行为,因为您仅在遇到障碍物时才使用它,想象一下垂直管, 敌人在上面,他试图到达管子下面的玩家,敌人会因为他还没有碰到任何障碍物而下降,当他到达管子的底部时,这是一个障碍物,然后算法将计算将要向后走的路径(上管),但是一旦他上去,就没有障碍物,他会再次向下。如果我错了告诉我
标签: algorithm 2d monogame tile