Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java libGDX:在侧卷轴上实现AI_Java_Libgdx_Artificial Intelligence_Path Finding - Fatal编程技术网

Java libGDX:在侧卷轴上实现AI

Java libGDX:在侧卷轴上实现AI,java,libgdx,artificial-intelligence,path-finding,Java,Libgdx,Artificial Intelligence,Path Finding,我正在做一个2D侧滚游戏 说明: 我使用libGDX和AI扩展。这款游戏将在android上发布(人工智能不应该消耗太多)。我的地形不是基于栅格的,它是程序生成的多边形高度贴图(没有洞穴)。 有3种类型的敌人(NPC)-近距离,远距离(子弹)和联合作战 实体有3种移动方式-左、右和跳跃。所有这些都可以像图片上那样在地面上盘旋。我极力主张使节点与地形之间有y偏移,但如果玩家跳跃,近战敌人就不会有路径(我没有测试,但我假设是这样) 我在基于网格的游戏中看到了很多例子,但在我的场景中没有 对不起,我

我正在做一个2D侧滚游戏

说明:

我使用libGDX和AI扩展。这款游戏将在android上发布(人工智能不应该消耗太多)。我的地形不是基于栅格的,它是程序生成的多边形高度贴图(没有洞穴)。

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

实体有3种移动方式-左、右和跳跃。所有这些都可以像图片上那样在地面上盘旋。我极力主张使节点与地形之间有y偏移,但如果玩家跳跃,近战敌人就不会有路径(我没有测试,但我假设是这样)

我在基于网格的游戏中看到了很多例子,但在我的场景中没有

对不起,我的知识不多,我几天前刚刚在人工智能开发中学习

问题:

  • 人工智能(来自libGDX)与(几乎)无限的世界兼容吗

  • 我应该如何设置节点

  • AI可以用来计算子弹射向玩家吗


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

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

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

      这里唯一的人工智能方面是确定敌人的行为。这一点可以通过a来实现,敌人的状态有
      瞄准
      等待
      跟随
      射击
      。取决于你的头像离你有多远或者你能到达它的距离,状态会发生变化