我的程序中有以下方法让球持续弹跳。我尝试过修改,但似乎无法让球停在我的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();
}
}
}
UPDATE:
球反弹,并停止在GUI的底部。
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
}
}
所以会发生什么时球击中底部? – NPE
每当我点击GUI时,球就会向上移动到窗口的顶部,然后弹跳下来然后再次弹起。每个从墙上反弹都可以加速或减速。 – PrgmRNoob
@NPE这是代码行if(y < - 0)'检测底部并更改方向标志'upDown'。 –