Hallo Community,
In meinem Spiel gibt es ein Raumschiff, dass durch den Weltraum fliegen kann. Das Schiff ist im Fenster zentriert. Überall auf dem Bildschirm sind Images, also Sterne verteilt, die sich mit verschiedenen Geschwindigkeiten bewegen, wenn das Schiff gesteuert wird. So entsteht eine Scheinbare Bewegung des Schiffs. Jetzt würde ich gern einfügen, dass man das Schiff nach links oder rechts "drehen" kann. Dazu wollte ich versuchen die verschiedenen Sterne auf einer Kriesbahn um das Schiff zu bewegen. Zu Anfang werden die Sterne mit Hilfe von festgelegten Koordinaten auf dem Bildschirm positioniert. Danach habe ich versucht die Entfernung jedes einzelnen Sternes bis zum Schiff zu berechnen und diese dann als Rotationsradius zu benutzen:
was allerdings nicht so richtig funktionieren will.
In einem Timer versuche ich dann die Sterne zu rotieren:
Das Problem:
1. Die Radien werden falsch berechnet
2. Ich denke ich muss irgendwie den Alpha-Winkel von jedem Stern in seiner Anfangsposition herausbekommen
Ich wäre euch dankbar, wenn ihr mir sagen könntet wie ich das Problem beheben kann oder welche Möglichkeiten es noch gibt, Objekte auf einer Kreisbahn zu rotieren.
lg BraunBerry
In meinem Spiel gibt es ein Raumschiff, dass durch den Weltraum fliegen kann. Das Schiff ist im Fenster zentriert. Überall auf dem Bildschirm sind Images, also Sterne verteilt, die sich mit verschiedenen Geschwindigkeiten bewegen, wenn das Schiff gesteuert wird. So entsteht eine Scheinbare Bewegung des Schiffs. Jetzt würde ich gern einfügen, dass man das Schiff nach links oder rechts "drehen" kann. Dazu wollte ich versuchen die verschiedenen Sterne auf einer Kriesbahn um das Schiff zu bewegen. Zu Anfang werden die Sterne mit Hilfe von festgelegten Koordinaten auf dem Bildschirm positioniert. Danach habe ich versucht die Entfernung jedes einzelnen Sternes bis zum Schiff zu berechnen und diese dann als Rotationsradius zu benutzen:
Java:
public static void initRotation(){
StarsRadius[0] = (int) Math.sqrt(Math.pow((coordsY[0] - StarsOriginY), 2) + Math.pow((coordsX[0] - StarsOriginX), 2));
}
was allerdings nicht so richtig funktionieren will.
In einem Timer versuche ich dann die Sterne zu rotieren:
Java:
@Override
public void actionPerformed(ActionEvent e) {
if (e.getSource() == StarsRotationTimer){
coordsX[0] = (int) (StarsOriginX + StarsRadius[0] * Math.sin(StarsAlpha));
coordsY[0] = (int) (StarsOriginY + StarsRadius[0] * Math.cos(StarsAlpha));
StarsAlpha += Spaceship.RotationSpeed;
if (StarsAlpha >= 2*Math.PI){StarsAlpha = 0.01;}
}
}
Das Problem:
1. Die Radien werden falsch berechnet
2. Ich denke ich muss irgendwie den Alpha-Winkel von jedem Stern in seiner Anfangsposition herausbekommen
Ich wäre euch dankbar, wenn ihr mir sagen könntet wie ich das Problem beheben kann oder welche Möglichkeiten es noch gibt, Objekte auf einer Kreisbahn zu rotieren.
lg BraunBerry