[RESOLU][DB-AL] Rotation d'un objet (yaw pitch roll)

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
Fasol0
Messages : 64
Inscription : 07 Avr 2015 11:43

Re: [DB-AL] Rotation d'un objet

Message par Fasol0 » 13 Jan 2017 13:20

Avec ta méthode j'arrive à afficher les bons angles de rotation dans l'inspector en effectuant la hiérarchie roulis, parent de tangage, parent de lacet, parent du bateau, mais la rotation n'est toujours pas correcte..

J'ai cependant trouvé le moyen d'obtenir une rotation correcte pour le roulis et le tangage en compensant le roulis lors de la rotation du tangage, soit:

Code : Tout sélectionner

roll.transform.localEulerAngles = new Vector3(roulis, 0, 0); //roll (roulis) parent de pitch (tangage)
pitch.transform.localEulerAngles = new Vector3(roulis, 0, tang);
mais impossible d'ajouter la troisième rotation (lacet) correctement.. :snif:

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6222
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: [DB-AL] Rotation d'un objet

Message par boubouk50 » 13 Jan 2017 14:47

Ça parait aberrant ce que tu écris. Ça te double le roulis...

J'ai regardé un peu sur le net concernant l'ordre des rotations:

Code : Tout sélectionner

//roll
transform.Rotate(0f, 0f, roll, Space.Self);
// pitch
transform.Rotate(pitch, 0f, 0f, Space.Self);
// yaw
transform.Rotate(0f, yaw, 0f, Space.Self);
Donc d'après ceci, ton gameObject doit d'abord faire une rotation sur Z, puis X et enfin Y.
Donc, teste avec un GameObject Empty, parent de ton bateau qui subira les transformations comme suit.

Code : Tout sélectionner

transform.localEulerAngles = new Vector3 (0f, 0f, tang);
transform.localEulerAngles += new Vector3 (roulis, 0f, 0f);
transform.localEulerAngles += new Vector3 (0f, lacet, 0f);
J'espère que ce sera un peu plus concluant...
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Fasol0
Messages : 64
Inscription : 07 Avr 2015 11:43

Re: [DB-AL] Rotation d'un objet

Message par Fasol0 » 23 Jan 2017 11:53

J'ai enfin trouvé le souci, j'aurais dû m'en apercevoir bien plus tôt.. En fait les données de lacet transmises par mon capteur n'étaient valables qu'à l'horizontal.. je n'intégrait pas d'algo de compensation d'inclinaison, c'est chose faite et ça fonctionne!

Le problème ne venait donc pas d'Unity

Merci pour ton aide et ta patience en tout cas Boubouk!
J'aurais quand même appris des choses sur la gestion des rotations sur Unity :)

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6222
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: [DB-AL] Rotation d'un objet

Message par boubouk50 » 23 Jan 2017 12:06

Avec plaisir! (moi aussi, j'apprends des trucs ;-) )

Lorsqu'un problème est résolu, merci d'éditer le titre du 1e message en insérant [RESOLU] au début de celui-ci.
Je m'en occupe pour cette fois.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Répondre

Revenir vers « (C#) CSharp »