这可能是一个非常基本的问题,但我似乎找不到任何其他文章。
无论如何,我已经用 Java 编写了一个小的弹跳球程序来尝试扩展我的基本技能。该程序只是一个简单的弹跳球,它会掉落并希望弹跳一段时间。原始程序运行良好,但现在我尝试在程序中添加重力。重力实际上可以正常工作一段时间,但是一旦反弹变得非常小,动画就会在很短的时间内变得不稳定,然后球的位置就会不断减小。我试图找出问题所在,但我就是看不到它。任何帮助都将受到欢迎。
public final class Ball extends Rectangle {
float xspeed = 1.0f; float yspeed = 1.0f; float gravity = 0.4f;
public Ball(float x, float y, float width, float height) {
super(x, y, width, height);
}
public void update(){
yspeed += gravity;
move(xspeed, yspeed);
if(getX() < 0){
xspeed = 1;
}
if(getX() + getWidth() > 320){
xspeed = -1;
}
if(getY() < 0){
yspeed = 1;
}
if(getY() + getHeight() > 200 && yspeed > 0){
yspeed *= -0.98f;
}
if(getY() + getHeight() > 200 && yspeed < 0){
yspeed *= 0.98f;
}
}
public void move(float x, float y){
this.setX(getX()+x);
this.setY(getY()+y);
}
}
编辑:谢谢,似乎已经对不稳定的运动进行了分类。我仍在努力寻找如何在球停止弹跳时阻止它向下移动。现在它会移动停止弹跳然后继续向下移动通过“地板”。我认为这与我的 yspeed += 重力线有关。我只是看不出我将如何停止运动。