gpt4 book ai didi

java - 使球停止

转载 作者:行者123 更新时间:2023-11-30 07:13:52 25 4
gpt4 key购买 nike

我的程序中有以下方法可以使球持续弹跳。我试过修改但似乎无法让球停在我的 GUI 底部。我的主要目标是让这些方法模拟就像您在弹跳一个真实的球一样。

private void updateDelta() {
final int minimumMovement = 5;
final int maxExtra = 10;
deltaY = minimumMovement + (int) (Math.random() * maxExtra);
}

public void verticalBounce(Container container) {

// controls vertical ball motion
if (upDown) {
y += deltaY;

if (y >= getHeight()) {
upDown = false;
updateDelta();
}
} else {
y += -deltaY;
if (y <= 0) {
upDown = true;
updateDelta();
}
}

}

更新:

球弹跳并停在图形界面的底部。

public void verticalBounce(Container container) {

deltaY = deltaY - gravity;
y = y + deltaY;

if (y > getHeight()) {
y = getHeight(); // reset location
deltaY = (int) (deltaY * -0.9); // slows down ball
}

}

最佳答案

这些代码看起来都不正确。您需要实现直线运动方程:

http://en.wikipedia.org/wiki/Linear_motion

你需要的是s = ut + 0.5 * a * t * t,其中

s = distance
u = an initial velocity - regard as the speed at which it hits the ground
a = acceleration due to gravity (you can probably have this pretty arbitrary)
t = time

你在向上的路上颠倒了 a 的符号。

为了模拟有损弹跳,通过从系统中取出一定的能量因子 E 来减少 u:

new_u * new_u = (1 - E)u * u

(这来自移动物体的动能公式)。

从你的问题中可以看出你是有能力实现的,所以我就不提供代码了;只是物理学。

关于java - 使球停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18990033/

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