libGDX:在横版游戏中实现 AI

libGDX: Implementing AI on a sidescroller

我正在开发 2D 横向卷轴游戏。

描述:

我正在使用 libGDX 和 AI 扩展。游戏将于 android 发布(AI 不应消耗大量资源)。我的地形不是基于网格的,它是一个程序生成的多边形高度图(没有洞穴)。

有 3 种类型的敌人 (NPC) - 近战、远战 (子弹) 和联合战斗。

实体有 3 种移动方式 - 向左、向右和跳跃。还有一些可以像图片一样悬停在地面上。我很难让节点与地形有 y 偏移量应该可以工作,但如果玩家跳跃,近战敌人就没有路径(我没有测试但我假设它)。

我看到很多关于基于网格的游戏的例子,但不是我的场景。

原谅我知识少,前几天才刚开始研究AI开发

问题:

首先,我不知道 libGDX 但如果你想拥有一个无限的世界,你必须对其进行编程。这意味着您随机生成地形并在不再需要时在内存中将其销毁。如果你想无限地向左和向右移动,你必须在内存已满的情况下有效地将你的世界存储在硬盘上。对于你的多边形,如果你想返回你的头像,你只需要存储节点和一些数字作为对周围元素的引用。

其次,因为您的游戏是二维的,所以可能的路径非常简单,您不需要路径查找算法。所以你不需要节点或类似的东西。你需要的是像 hit-boxes 这样的东西,这样你的敌人就知道他们什么时候互相攻击了。人工智能只需要知道你的头像是左边还是右边,以及它是否可以直接到达。那是简单的几何计算。如果可以跳过其他敌人,就好像他们可以穿过他们一样。

最后,用线性代数简单计算出子弹的方向,得到你的头像到敌人的直线。你只需要计算它是否与其他敌人或地形相交就知道你的头像是否可以被击中。

此处唯一的 AI 方面是确定敌人的行为。这可以通过 state machine 来完成,其中敌人具有 aimingwaitingfollowingshooting 等状态。状态会根据您的头像距离多远或可达程度而变化。