1

出于某些研究目的,我构建了一个小型坦克游戏,其中你有一个由玩家控制的坦克和一个或多个 NPC 坦克。

现在我想让这些 NPC 坦克在他们不知道的领域中导航。如果它们在一定范围内,它们可以检测到障碍物。如果他们检测到这些障碍,他们应该将它们保存在某个易于查询的数据结构中。以便他们在搬家时将其考虑在内。

现在这是我卡住的地方:如果我的领域是一个网格,那对我来说很容易,我只需保存障碍物所在的瓷砖/节点。

但是我并没有真正使用网格,我的坦克只是根据它们的速度向前移动几个像素,所以坦克可以定位在任何像素组合以及障碍物上。

现在我将如何处理这个?碰撞检测超出范围。我是否被迫使用某种网格或航路点?

4

1 回答 1

3

为什么不使用导航网格解决方案?看起来正是您正在寻找的东西,一种表示具有任意多边形障碍物的人工智能导航域的方法。

github 目前处于关闭状态,但根据这个网站(值得一试,这是一个有趣的 Java 实现),这个项目有一个 python 导航网格实现。

编辑

根据您在下面的评论,我认为分层表示实际上更接近您正在寻找的答案。本文链接到一篇论文,该论文描述了如何将逐像素网格(具有任意形状的障碍物)抽象为节点边缘图,以提高导航计算的速度。通过将这种类型的层次表示与动态导航算法(如 d*)结合起来(有关动态导航算法的概述,请参阅此答案),您应该能够为您的问题实现解决方案。

于 2012-12-23T03:10:27.007 回答