gpt4 book ai didi

java - 阻止 Sprite 通过另一个 Sprite 重影

转载 作者:行者123 更新时间:2023-12-01 15:19:11 26 4
gpt4 key购买 nike

好吧,我刚刚开始学习java(我通常用Objective-C 编程)。我的第一款游戏是一款类似于神奇宝贝的游戏,但是,它显然要简化得多......

我遇到的麻烦是我找不到方法来阻止 2 个 Sprite 互相“重影”。在屏幕上,我设置了边框(边界)、玩家 Sprite 和敌人 Sprite 。

public void playerUpdate(GameContainer gc, int delta) throws SlickException
{
Input input = gc.getInput();

// Right Key Pressed
if (input.isKeyDown(Input.KEY_RIGHT) && (leftKeyPressed == false)
&& (upKeyPressed == false) && (downKeyPressed == false))
{
player = walkRight;
playerX += speed * delta;
rightKeyPressed = true;
if (playerX >= Main.getWindowWidth() - pImageWidth)
{
playerX -= speed * delta;
}
} else if (rightKeyPressed == true)
{
player = standRight;
rightKeyPressed = false;
}

^^ 这是我需要实现碰撞检测的地方。我已经在每个图像中添加了矩形以进行碰撞检测,但是,我并不寻求一种使矩形消失的方法。我需要一种方法来阻止一个 Sprite 穿过另一个 Sprite 。

有什么想法吗?

我尝试过使用

if (this.playerBoundingBox.intersects(Enemy.getEnemyBoundingBox())
{
playerX += speed * delta;
}

但是,当我实现此操作时,播放器会卡住并且无法释放。

谢谢大家

最佳答案

碰撞检测是一个广泛而深入的主题,有很多方法可以实现它。

我强烈建议阅读The Guide To Implementing 2D Platformers ,这应该会给你一些很好的建议。我已经使用 Sonic Retro Physics Guide 实现了 2D 平台引擎,这真的很有用。

在我的游戏三叶草:一个好奇的故事中,我(不必要!)实现了更复杂的每像素碰撞与边界框的混合。方法是计算出所需的移动路径,然后逐像素检查是否有任何障碍物 - 如果有,则仅移动到像素减一的位置。

创建一个在所有情况下都完美无缺的 2D 引擎是一项非常艰巨的任务,而不是您应该尝试的事情。对 Actor 的尺寸以及任何物体在一次滴答中可以移动的最大速度等进行一些限制将使您的生活更轻松。省略可以插入玩家的东西会容易得多,因为这样您只需在一个“方向”上进行一次碰撞检测(即当玩家移动时,而不是当所有其他 Actor 移动时)。

关于java - 阻止 Sprite 通过另一个 Sprite 重影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11202572/

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