2016-05-19 11 views
0

J'ai ce problème depuis plus de 2 jours. Ajustement constant. Je ne peux pas le faire.Faire pivoter le lecteur en utilisant le touchpad libgdx pour faire face à la direction de déplacement

J'ai une texture de joueur (le joueur fait face à la gauche) que je veux faire pivoter en utilisant le pavé tactile. Donc, le joueur fera face à sa direction de course.

Jusqu'à présent, j'ai ceci:

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); 

Mais avec « roation * 100 », il tourne comme 2 fois autour et sans qu'il tourne à peine. J'ai même essayé de changer les valeurs X et Y pour la fonction atan2 ci-dessus. Mais je ne l'ai jamais fait tourner seulement dans la direction où je me déplace. J'ai aussi essayé la fonction atan, également en changeant les valeurs X et Y.

S'il vous plaît aidez-moi. J'ai essayé des milliers de façons, des calculs différents et des choses que j'ai vu sur google. Rien ne m'a apporté l'effet désiré.

Répondre

1

Utilisez simplement Vector2. Utilisez-le pour stocker votre bouton pour cent y et x. Ensuite, vous pouvez obtenir la rotation en degrés avec vector2.angle().

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

Merci beaucoup tellement! Finalement. Une chose si simple. ! – MarvinJ

+0

Fonctionne bien, sauf dans mon cas, le sprite revient à son angle initial lorsque le pavé tactile est relâché. Y a-t-il un moyen de garder son angle après? – mikebrsv

+0

Résolu! Wrapped 'runningFrame.setRotation (angle);' dans l'instruction 'if (touchpad.isTouched())'. – mikebrsv