gpt4 book ai didi

android - Libgdx 敌人移动

转载 作者:行者123 更新时间:2023-11-29 14:24:50 24 4
gpt4 key购买 nike

我对移动我的游戏中的敌人有疑问,比如在马里奥兄弟游戏中移动乌龟。

我正在 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) {
// the enemy patrols between leftLimit and rightLimit
if (enemySpeed < 0 && enemyX < leftLimit) {
enemyX = leftLimit;
enemySpeed = -enemySpeed;
} else if (enemySpeed > 0 && enemyX > rightLimit) {
enemyX = rightLimit;
enemySpeed = -enemySpeed;
}

enemyX += enemySpeed * delta;

renderEnemy();
}

[更新]

如果我没记错的话,马里奥的屏幕只能往右走。如果马里奥向左移动,屏幕将保持在原位,并且只允许马里奥到达其左侧边缘,而不能再进一步。

由于他并不总是在可见区域的相同位置,因此根据可见区域位置而不是角色位置让敌人处于 Activity 状态/渲染可能更好。

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

在每次更新时你可以做这样的事情:

visibleX = Math.max(charX - visibleWidth / 2, visibleX);

if (enemyX <= visibleX + visibleWidth + someOffset && enemyX >= visibleX - someOffset) {
// ...
}

关于android - Libgdx 敌人移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21222764/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com