libGDX: 在横版卷轴游戏中实现AI

我正在开发一款2D横版卷轴游戏。

描述:

我使用的是libGDX及其AI扩展。游戏将在安卓平台上发布(AI不应消耗过多的资源)。我的地形不是基于网格的,而是一个程序生成的多边形高度图(没有洞穴)。enter image description here

有三种类型的敌人(NPC)——近战、远程(子弹)和混合战斗。

实体有三种移动方式——向左、向右和跳跃。有些实体还可以像图片中那样在地面上悬浮。我考虑过在离地形有一定高度的节点上进行路径规划,但如果玩家跳跃,近战敌人可能无法找到路径(我没有测试过,但我猜测会这样)。

我见过很多基于网格的游戏的例子,但没有适合我这种情况的。

请原谅我的知识不足,我刚开始接触AI开发几天前才开始的。

问题:

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

  • 我应该如何设置节点?

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


回答:

首先,我不了解libGDX,但如果你想要一个无限的世界,你需要编程实现。这意味着你需要随机生成地形,并在不需要时从内存中销毁它。如果你想无限地向左和向右移动,你需要在内存满时有效地将世界存储在硬盘上。对于你的多边形,你只需要存储节点和一些数字作为对周围元素的引用,这样你就可以让你的角色返回。

其次,因为你的游戏是二维的,路径选择非常简单,你不需要路径查找算法。因此,你不需要节点或类似的东西。你需要的是类似碰撞盒的东西,这样你的敌人就知道何时会碰撞。AI只需要知道你的角色是在左边还是右边,以及是否可以直接到达。这只是简单的几何计算。如果可以跳过其他敌人,就好像他们可以穿过敌人一样进行路径规划。

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

这里唯一的AI方面是确定敌人的行为。这可以通过状态机来实现,敌人有如瞄准等待跟随射击等状态。根据你的角色离多远或是否可达,状态会发生变化。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注