libGDX:在sidescroller上实现AI

时间:2016-10-14 22:37:52

标签: java libgdx artificial-intelligence path-finding

我正在开发2D sidescroller游戏。

说明

我正在使用libGDX和AI扩展。游戏将在Android上发布(AI不应该重复消耗)。我的地形不是基于网格的,它是程序生成的多边形高度图(没有洞穴)。 enter image description here

有3种类型的敌人(NPC) - 近距离,远距离(子弹)和联合作战。

实体有3种移动方式 - 左,右和跳。所有人都可以像在图片上一样盘旋在地面上。我强烈要求使用y偏离地形的节点应该可以工作但是如果一个玩家跳起来,一个近战的敌人就没有路径(我没有测试它,但我认为它)。

我在基于网格的游戏中看到了很多例子,但我的情况并非如此。

请原谅我不太了解,几天前我刚刚在AI开发中受到了抨击。

问题:

  • AI(来自libGDX)是否与(几乎)无限世界兼容?

  • 我应该如何设置节点?

  • AI可以用来计算击中球员的子弹方向吗?

1 个答案:

答案 0 :(得分:1)

首先,我不了解libGDX但是如果你想拥有一个无限的世界,你必须对它进行编程。这意味着您可以随机生成地形并在内存中将其销毁(如果不再需要它)。如果您想要无限地向左和向右移动,则必须在存储器已满时有效地存储您的硬盘。对于你的多边形,你只需要存储节点和一些数字作为对周围元素的引用,如果你想回到你的化身。

其次,因为你的游戏是二维的,可能的路径非常简单,你不需要寻路算法。所以你不需要节点或类似的东西。你需要的东西就像打击盒一样,这样你的敌人就可以知道它们何时相互碰撞。 AI只需要知道您的头像是左侧还是右侧以及是否可以直接访问。这是简单的几何计算。如果有可能跳过其他敌人,就好像他们可以通过它们一样。

最后,使用线性代数计算子弹方向,以获得从你的化身到敌人的直线。您只需要计算它是否与其他敌人或地形相交,以确定您的头像是否可以被击中。

这里唯一的AI方面是确定敌人的行为。这可以使用state machine来完成,其中敌人拥有aimingwaitingfollowingshooting等状态。取决于您的头像的距离或状态的变化程度。