Dies ist wahrscheinlich ein wirklich grundlegendes Problem, aber ich kann anscheinend keine anderen Artikel darüber finden.Bouncing Ball in Java
Wie auch immer, ich habe ein kleines springendes Ballprogramm in Java geschrieben, um meine Grundkenntnisse zu erweitern. Das Programm ist nur eine einfache springenden Ball, der fallen wird und hoffentlich für eine Weile springen. Das ursprüngliche Programm funktionierte gut, aber jetzt habe ich versucht, die Schwerkraft in das Programm hinzuzufügen. Die Gravitation funktioniert tatsächlich eine Weile gut, aber sobald die Bounces sehr klein sind, wird die Animation für eine sehr kurze Zeit unberechenbar, dann nimmt die Position des Balls ständig ab. Ich habe versucht, das Problem herauszufinden, aber ich kann es einfach nicht sehen. Jede Hilfe wäre sehr willkommen.
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);
}
}
EDIT: Danke, die die erratische Bewegung sortiert zu haben scheint. Ich habe immer noch Schwierigkeiten zu sehen, wie ich meinen Ball stoppen kann, wenn er nicht mehr springt. Gerade jetzt wird es sich bewegen, um zu springen, dann weiter nach unten über den "Boden". Ich denke, dass es mit meiner Yspeed + = Gravitationslinie zu tun hat. Ich kann einfach nicht sehen, wie ich die Bewegung stoppen würde.
bewegen scheint Deltas zu nehmen, keine absoluten Werte, ist der Ball wahrscheinlich den Rand des Universums :-) – paxdiablo
heh fliegen , Hoppla. Fest. – Blorgbeard