Вероятно, это действительно основная проблема, но я не могу найти другие статьи по ней.
В любом случае, я написал небольшую программу для прыгающего мяча на 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 + = гравитации. Я просто не понимаю, как мне остановить движение.