我决定在当天从后面拿起旧的2D游戏引擎并继续工作。这是我第一次尝试为敌人实施一些基本的AI并且我遇到了一些问题。这是关于我如何为敌人处理AI的问题。
如果玩家在敌人的某个范围内,则只需检查玩家是向上还是向下,向左或向右并调整它的坐标,敌人就会向玩家移动因此。
如果敌人遇到妨碍他向玩家方向移动的障碍物,那么我会调用我的A *算法来检测到玩家的最短路径并在障碍物周围移动。
< / LI>我正在检查是否每一帧都不再阻挡敌人,如果是,那么再次调用A *算法来调整玩家的移动位置。
我实施A *的方式是我根据敌人的尺寸检查相邻的方格。因此,例如,如果我有一个60X60的敌人,我将检查这些维度内的相邻瓦片,也可以是不同大小的敌人。我遇到的问题如下:
说敌人是黑方。它检查它的相邻瓷砖,并且可以移动到它前面的正方形,因为它不会与该正方形中的任何物体发生碰撞。一旦它在顶部正方形,它可以适合通过正方形而不会发生碰撞。现在为这种情况:
当敌人处于黑匣子的位置时,说A *算法被调用。现在因为没有敌人在顶墙之间移动所需的大小会发生碰撞,根据我的算法,这会导致敌人忽略这个区块。
所以我的问题是,围绕这个问题最常见的方法是什么。可能有些傻我想念,但我想我会问。我希望我能解释一下我遇到的问题,如果你需要任何澄清,请问。提前谢谢。
答案 0 :(得分:0)
我假设您正在通过敌人大小的块填充A *
这是错误的,你需要通过单个单元/像素提供任何东西
因此填充时填充相邻的行(不是整个框)
如果没有自由整行,那么根本不填写
您需要将一些额外的信息编码到A *地图,例如:
知道你可以成长的方式
<强> [注释] 强>
A *填充应始终与您的移动能力相匹配