Ich mache ein einfaches Spiel, bei dem ein Raumschiff von einem Stern in der Mitte des Bildschirms angezogen wird. Der Code Ich habe bisher das Rechteck (bald eine Rakete) auf eine Art und Weise bewegt, die überhaupt nicht glatt ist. Das Rechteck hört auch nicht auf, wenn es den Stern erreicht, sondern bewegt sich weit über den Stern hinaus, bevor es zurückkehrt.Planetarische Gravitation in Java
Hier ist mein Code:
public void move() {
// Deals with gravity towards the center star
if (x > game.getWidth()/2) {
xVel -= xa;
}
if (x < game.getWidth()/2) {
xVel += xa;
}
if (y > game.getHeight()/2) {
yVel -= ya;
}
if (y < game.getHeight()/2) {
yVel += ya;
}
x += xVel;
y += yVel;
}
Ich beginne mit der Berechnung, wo die Rakete auf dem Bildschirm relativ zu der Mitte befindet, und dann seine Beschleunigungswerte ändern, xa und ya, je nach Bedarf. Ich füge dann die Beschleunigungswerte zu den Velocity-Variablen xVel und yVel hinzu.
Danke für die Information ... und Ihre Frage ist? – pczeus
Wenn Sie keine * Kollisionserkennung * hinzufügen, bewegt sich jedes Objekt, das von der Schwerkraft angezogen wird, über das Schwerpunktzentrum hinaus und wird dann wieder langsamer von der Sogwirkung der Schwerkraft, die sich jetzt hinter dem Objekt befindet. So funktioniert die Schwerkraft. – Andreas