我在做一个2D的副手游戏。
描述:
我使用libGDX和人工智能扩展。游戏将在android上发布( AI不应该是重燃消耗)。我的地形不是基于网格的,它是一个过程生成的多边形高度图(没有洞穴)。

有三种类型的敌人(NPC) -近距离(子弹)和联合战斗.
实体有三种移动方式-左、右和跳.所以有些人可以像在照片上一样在地面上盘旋。我想让与地形相距y的节点工作,但如果玩家跳跃,接近战斗的敌人就没有路径(我没有测试它,但我假设它)。
我在基于网格的游戏中看到了许多例子,但不是我的场景。
请原谅我的知识不足,几天前我刚刚开始了人工智能的发展。
问题:
发布于 2016-10-18 12:39:27
首先,我不知道libGDX,但是如果你想要有一个无限的世界,你必须编程它。这意味着你随机生成地形并在内存中销毁它,如果它不再需要的话。如果你想无限地向左和右走,你必须有效地将你的世界存储在你的硬盘上,如果内存是满的。对于你的多边形,你只需要存储节点和一些数字作为对周围元素的引用,如果你想回到你的化身。
第二,因为您的游戏是二维的,所以可能的路径非常简单,您不需要路径查找算法。所以你不需要节点之类的东西。你需要的是类似的东西,让你的敌人知道什么时候他们互相攻击。AI只需要知道你的化身是左还是右,它是否可以直接到达。这是简单的几何计算。如果有可能跳过其他敌人,这就好像他们可以通过他们的道路。
最后,简单地用线性代数计算子弹方向,得到从你的化身到敌人的直线。您只需计算它是否与其他敌人或地形交叉,以了解您的化身是否可以被击中。
这里唯一的AI方面是确定敌人的行为。这可以用状态机来实现,其中敌人有aiming、waiting、following或shooting这样的状态。取决于你的化身有多远,或者它能达到多远,状态会发生变化。
https://stackoverflow.com/questions/40052955
复制相似问题