gpt4 book ai didi

java - 球与砖 block 弹起时出现问题(打砖 block 游戏)

转载 作者:行者123 更新时间:2023-12-02 04:02:12 25 4
gpt4 key购买 nike

我正在构建一个像打砖 block 一样的突破球游戏,当球与砖 block 碰撞时我遇到了一个大问题。当球碰撞到砖 block (brickX,brickX) (brickX,brickX+brickLength) (brickY,brickY) (brickX+brickLength, brickY) 的角时会发生这种情况。

这是我的代码:

private void checkCollision() {
for(Brick brick : l.getCurrentLevel().getAllBricks()) {
double bx = b.getX();
if(brick.isShot())
continue;
if(b.getBounds().intersects(brick.getBounds())) {
if (
(b.getX() == brick.getX() || b.getX() == brick.getX() + brick.getLength())
&& (b.getY() >= brick.getY() && b.getY() <= brick.getY() + brick.getHeight())
)
b.setDx(-b.getDx());


else
b.setDy(-b.getDy());
if(brick.isDestroyable()) {
brick.shot();
b.setVelocity(b.getVelocity()+0.05);
}

break;
}
}
}

最佳答案

乍一看,您的问题似乎在这里:

(b.getX() == brick.getX() || b.getX() == brick.getX() + brick.getLength())

如果 x 每个刻度增加(例如)5,那么您可以从 b.getX() < brick.getX() 跳转至b.getX() > brick.getX()没有达到等于条件。因此,当球进入砖 block 时,它会失败该条件并跳至此:

else
b.setDy(-b.getDy());

因此,当您希望它水平反转(也可能垂直反转)时,它会反转垂直方向。

顺便说一句,您可能希望养成在单行 if 语句中使用 {} 大括号的习惯,即使它们并不是绝对必要的。它们将帮助您的代码看起来更干净,并避免在稍后修改内容时引入错误。

关于java - 球与砖 block 弹起时出现问题(打砖 block 游戏),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56727904/

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