2012-04-12 14 views
0

Ich mache ein Java3D Spiel (Java3D Project here), und ich frage mich, wie man den Spieler relativ zu seiner Position und Drehwinkel um die y-Achse bewegt.Java3D Spiel Bewegung

Ich kann den Player um die y-Achse drehen und die Position einstellen, aber die Position wird relativ zu den x- und z-Achsen festgelegt. Wenn der Player also rückwärts zur ursprünglichen Drehung zeigt, dann drücken Sie die Taste Taste für vorwärts, der Spieler geht rückwärts.

Wie kann ich es so machen, dass der Spieler in die Richtung geht, in die er schaut?

Antwort

2

Sie müssen die Bewegung als Vektor mit der Differenz der Eingaben (vorwärts, rückwärts, links, rechts) verfolgen und dann mithilfe der polaren Funktionen diese in absolute Koordinaten (x, z) umwandeln.

Zum Beispiel (nur für die Vorwärtsbewegung):

move.x = forward*(Math.sin(yrotate)) 
move.z = forward*(Math.cos(yrotate)) 

Tweak nach Perfektion. Die Sideways-Bewegung (strafe) würde die sin/cos umkehren.

+0

Ist Yrotate in Grad oder Bogenmaß ...? – DankMemes

+0

sollte im Bogenmaß sein, das ist was Math.sin/cos annehmen. Um herauszufinden, was ist, erinnern, dass cos (0) = 1 und sin (0) = 0; Das heißt, was auch immer die Startorientierung der Spieler ist - sich entlang des x oder z zu bewegen - sollte den cos Teil haben. Ich nehme z wegen OpenGL an. –

+0

Umkehren heißt negativ? –