gpt4 book ai didi

java - 尝试改变屏幕边缘的速度不起作用

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

结果应该只是引起屏幕边缘的反弹效果,但对象会左右抽动,但不会像向右移动那样向左移动......

这是移动矩形的方法; (这里的输入与 if 语句中正在更改的“xVelocity”相同,它这样做是因为有多个对象)

public void moveX (float x) {
if(rectangle.right >= Constants.SCREEN_WIDTH || rectangle.left <= 0){
xVelocity = -xVelocity;
}
rectangle.left += x;
rectangle.right += x;
}

此方法仅应用于更新方法中的不同矩形,它们向右移动得很好,但我不确定转身时出现什么问题。

最佳答案

假设 SCREEN_WIDTH 为 100,right 值为 95,xVelocity 为 10。

现在调用moveX(xVelocity)

首先,xVelocity 保持不变,然后 right 增加到 105。

再次调用moveX(xVelocity)

xVelocity 更改为 -10,然后 right 增加到 115,因为参数 x 为 +10。

再次调用moveX(xVelocity)

xVelocity 更改回 +10,然后 right 减少到 105,因为参数 x 为 -10。

现在我们回到了与第一次调用后相同的条件,因此您的 block 在屏幕边缘来回抖动。

<小时/>

为了防止这种情况,您可以使用:

if(rectangle.right >= Constants.SCREEN_WIDTH) {
xVelocity = -Math.abs(xVelocity);
} else if ( rectangle.left <= 0) {
xVelocity = +Math.abs(xVelocity);
}

关于java - 尝试改变屏幕边缘的速度不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43011789/

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