[MY-AL] Problème Mathf.Rad2Deg

Pour les scripts écrits en C#
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :

Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé

Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie

Exemple :

[DB-RS] Mouvement perso multijoueur
JohnyBoy
Messages : 91
Inscription : 22 Mars 2017 20:23

[MY-AL] Problème Mathf.Rad2Deg

Message par JohnyBoy » 28 Mars 2017 16:27

Bonjour

J'essaye de faire un mouvement de personnage qui suit l'analogue.

Voilà le code

Code : Tout sélectionner

if (horizontal != 0 || vertical != 0) { // Si je bouge avec analogue gauche
                        // Je tourne le pivot avec analogue droit
			pivotHorizontal.transform.rotation *= Quaternion.Euler (0, lookHorizontal * speedRotation, 0); 
                        
                        // C'est le controller perso, il tourne en même temps que le pivot
			body.transform.rotation = pivotHorizontal.transform.rotation;


			float angle = Mathf.Atan2 (horizontal, vertical) * Mathf.Rad2Deg;

			angleSoldier = Mathf.Lerp (angleSoldier, angle, 0.5f);
                        
                         // C'est le perso
			soldier.transform.localRotation = Quaternion.Euler(0,angleSoldier,0);
				//Quaternion.Euler(0, angle,0);



		}else { // Si je bouge pas, c'est juste le pivot qui tourne
			pivotHorizontal.transform.rotation *= Quaternion.Euler (0, lookHorizontal * speedRotation, 0);
		}

Mon problème est que ça :
float angle = Mathf.Atan2 (horizontal, vertical) * Mathf.Rad2Deg;
return soit 0,90,180 ou -90

Du coup par exemple je pousse mon analogue gauche vers le bas, le perso va bien se diriger vers le bas.
Maintenant je pousse mon analogue gauche vers le bas et la gauche donc dans son coin inférieur gauche.
angle va alors passer de 180 à -135 donc le perso "rotationne" vers la position mais en allant d'un coup de 180 à -180 puis 135.
Donc imaginer le bug de rotation.

Ce problème je l'ai seulement parce que je fait un Mathf.Lerp pour que la rotation soit pas nette mais plutôt réaliste. Et seulement avec l'analogue dans ce cas de figure dans tous les autre cas j'ai aucun souci.

Je vais difficilement réussir à expliquer mieux mon problème mais si par hasard quelqu'un vois ce que je veux dire et à une solution je suis preneur.

En attendant je souhaite une bonne journée à tous mes lecteurs ;)

:!: Les balises code SVP :!:
Lire la Netiquette. Merci.

Répondre

Revenir vers « (C#) CSharp »