Page 1 sur 1

prendre les composantes de rotation locale

Publié : 20 Déc 2021 17:20
par Kaloverian
bonjour,

Je parente un objet obj à un empty.
A cet objet,je lui assigne des composantes locales de rotation comme ceci:

Code : Tout sélectionner

obj.transorm.parent=empty.transform;
obj.transform.localRotation=Quaternion.Euler(a,b,c);
Comment obtenir à nouveau en degrés les composantes de localRotation(ou les composantes locales de rotation) de l'objet si l'empty ou l'objet a tourné?
A mon fort avis,ces instructions ne répondent pas à ma demande
obj.GetComponenet<Transform>().lrotation; //composantes globales de rotation en radians
obj.GetComponenet<Transform>().localRotation; //peut-être compsantes locales de rotation mais ne renvoie pas en degrés
obj.GetComponenet<Transform>().eulerAngles;; //compsantes globales de rotation en degrés

merci de votre aide

Re: prendre les composantes de rotation locale

Publié : 20 Déc 2021 21:23
par Max
Bonsoir,

transform.rotation et transform.localRotation sont des quaternions, donc tu auras leurs composants (x-y-z-w).
Si tu souhaites avoir les valeurs de rotations en degré, il faut passer par :
transform.rotation.eulerAngles et transform.localRotation.eulerAngles.
La doc est ton amie pour ce genre de chose, et détaille plutôt bien ces concepts.
Sinon, tu as ce genre de lien qui peut aider à mieux comprendre: https://gamedevbeginner.com/how-to-rota ... ers-guide/

Re: prendre les composantes de rotation locale

Publié : 20 Déc 2021 22:51
par Kaloverian
1)pourquoi l'instruction:

Code : Tout sélectionner

   if(Input.GetKeyDown(KeyCode.I))
         {
            obj.transform.localRotation=Quaternion.Euler(0,angle,0);   //ne tourne qu'une seule fois
            
        }    
ne fait tourner qu'une seule fois seule fois l'objet malgré plusieurs appui de la touche I ?

2)
a)J'ai l'impression qu'après:
obj.transform.localRotation=
on ne peut mettre qu'un Quaternion (Quaternion.Identity , Quaternion.Euler(a,b,c))
Est-ce juste?
b)pour effectuer une rotation locale de obj parenté à empty déjà tourné globalement(par exemple)donc par rapport à laxe des ordonnées de l'empty et d'angle alpha
c'est bien cette instruction à uitliser:

Code : Tout sélectionner

obj.transform.parent=empty.transfom;
obj.transform.localRotation= Quaternion.Euler(0,alpha,0);   
Est-ce juste?
Si non,quelle est lla bonne instruction?

Re: prendre les composantes de rotation locale

Publié : 21 Déc 2021 01:03
par Max
j'ai parfois le sentiment que tu ne lis pas les réponses qui te sont faire.
Et que tu ne t’appuies pas sur la doc, pourtant plutôt bien faite.

1) normal, tu affectes une valeur angulaire à ton objet, donc chaque appui lui affectera toujours la
même valeur.
2) comme expliqué dans mon précédent message (avec liens vers la doc), oui localRotation et rotation sont des quaternions.

Pour le reste, regarde du coté de la méthode Rotate de la classe Transform, qui devrait répondre
à tes attentes.