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

问题描述 投票:3回答:1

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

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

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

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

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

在此输入图像描述


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

在此输入图像描述


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


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

algorithm 2d monogame tile
1个回答
0
投票

我假设你用敌人大小的块来填充A *

这是错误的,你需要通过单个单元/像素进行馈送

所以在填充相邻线时(不是整个盒子)

如果没有自由的整条线,那么根本不填充它

A *带块填充

你需要将一些额外的信息编码到A * map,如:

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

知道你可以成长的方式

[笔记]

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

© www.soinside.com 2019 - 2024. All rights reserved.