2016-05-19 19 views
0

Ich habe dieses Problem jetzt seit über 2 Tagen. Ständig optimieren. Ich kann es einfach nicht schaffen.Drehen Sie Player mit libgdx Touchpad, um in die Bewegungsrichtung zu sehen

Ich habe eine Player-Textur (Player ist auf der linken Seite), die ich mit dem Touchpad drehen möchte. So wird der Spieler seiner Laufrichtung gegenüberstehen.

Bisher habe ich dies:

double facerotation = Math.atan2(touchpad.getKnobPercentY(), touchpad.getKnobPercentX()); 

spriteBatch.draw(runningFrame, player.getPosition().x, player.getPosition().y, Player.getSize()/2, Player.getSize()/2, Player.getSize(), Player.getSize(), 1, 1, facerotation * 100, false); 

Aber mit „roation * 100“ er wie 2 mal dreht sich um und ohne dreht er kaum. Ich habe sogar versucht, die X- und Y-Werte für die atan2-Funktion oben zu ändern. Aber ich habe ihn nie nur in die Richtung drehen lassen, in die ich mich bewege. Ich habe auch die Atan-Funktion ausprobiert, auch mit dem Austausch der X- und Y-Werte.

Bitte helfen Sie mir. Ich habe Tausende von Möglichkeiten versucht, verschiedene Berechnungen und Dinge, die ich bei Google sah. Nichts brachte mir die gewünschte Wirkung.

Antwort

1

Verwenden Sie einfach einen Vector2. Verwende es, um deinen Knobprozentsatz y und x zu speichern. Dann können Sie die Drehung in Grad mit vector2.angle() erhalten.

Vector2 v = new Vector2(touchpad.getKnobPercentX(), touchpad.getKnobPercentY()); 
float angle = v.angle(); 
runningFrame.setRotation(angle); 
+1

Vielen Dank so so so sehr! Endlich. So eine einfache Sache. ! – MarvinJ

+0

Funktioniert gut, außer in meinem Fall kehrt das Sprite in seinen ursprünglichen Winkel zurück, wenn das Touchpad losgelassen wird. Gibt es eine Möglichkeit, den Winkel danach zu behalten? – mikebrsv

+0

Gelöst! Wrapped 'runningFrame.setRotation (angle);' in der 'if (touchpad.isTouched())' Anweisung. – mikebrsv