Libgdx 敌人移动

我想问一下关于游戏中敌人移动的问题,就像马里奥兄弟游戏中的乌龟那样。

我正在使用 Libgdx 开发一个类似马里奥兄弟的平台游戏。我已经制作了地面、玩家在地面上移动、游戏装饰等……但我不知道如何让敌人移动。

敌人应该在什么时候开始移动(渲染)?是经过一段时间延迟后,还是当玩家接近敌人(1-2个屏幕宽度)时,还是一直移动……


回答:

假设你有这样的图片:

enter image description here

当你移动角色时,可见区域会随之移动,例如你的角色总是处于中间位置。

当角色移动时,charX 会增加,当他移动了一定距离后到达一个位置,敌人就会被激活:

enter image description here

敌人会保持激活状态,直到角色到达这里:

enter image description here

实现方式可以是这样的:
someOffset 可以是一个任意的常数值,你可以使用它来让敌人在进入屏幕并变得可见之前就激活。

因此,对于每一帧,你可以这样做:

if (Math.abs(enemyX - charX) <= visibleWidth / 2 + someOffset) {    // 敌人在 leftLimit 和 rightLimit 之间巡逻    if (enemySpeed < 0 && enemyX < leftLimit) {        enemyX = leftLimit;        enemySpeed = -enemySpeed;    } else if (enemySpeed > 0 && enemyX > rightLimit) {        enemyX = rightLimit;        enemySpeed = -enemySpeed;    }    enemyX += enemySpeed * delta;    renderEnemy();}

[更新]

如果我没记错的话,马里奥游戏中的屏幕只能向右移动。如果马里奥向左移动,屏幕会保持不动,只允许马里奥移动到屏幕的左边缘,不能再往前。

由于他并不总是处于可见区域的相同位置,可能最好是根据可见区域的位置而不是角色的位置来激活/渲染敌人。

假设 visibleX 是可见区域左边缘(绿色矩形)的 x 位置。

在每次更新时,你可以这样做:

visibleX = Math.max(charX - visibleWidth / 2, visibleX);if (enemyX <= visibleX + visibleWidth + someOffset && enemyX >= visibleX - someOffset) {    // ...}

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中创建了一个多类分类项目。该项目可以对…

发表回复

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