Page 1 sur 1
erreurs de retour des composantes de rotation
Publié : 08 Mai 2019 22:21
par Kaloverian
bonjour,
Après déclaré initialement pi
et avoir écrit dans Update() cette ligne
Code : Tout sélectionner
print("composantes de rotation:"+objet.GetComponent<Transform>().rotation.x*180/pi+","+objet.GetComponent<Transform>().rotation.y*180/pi+","+objet.GetComponent<Transform>().rotation.z*180/pi);
les composantes de rotation de l'objet ne correspondent pas tout à fait
Pourquoi?
A essayer pour voir l'erreur
merci de votre aide
Re: erreurs de retour des composantes de rotation
Publié : 09 Mai 2019 07:54
par Max
Bonjour,
les éléments x-y-z de la propriété
rotation ne sont pas directement le reflet des angles de rotation de ton objet.
Transform.rotation est un Quaternion. Passe par
rotation.eulerAngles dans ce cas.
Une fois de plus, compulse la doc, tu aurais rapidement vu qu'il y avait un soucis avec ton approche.
Re: erreurs de retour des composantes de rotation
Publié : 23 Mai 2019 02:16
par Kaloverian
j'ai écrit ce petit code créant dynamiquement un objet qui doit prendre les composantes de rotation de l'objet précédent.
Je décide dans l'inpector que les composantes de rotation de l'objet initial sont par exemple:
a,b,c
mais les objets suivants ne les prennent pas!!
Pourquoi?Qu'est-ce que j'ai loupé?
Code : Tout sélectionner
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class getcomponent_rotation : MonoBehaviour
{
List<GameObject> list_objet=new List<GameObject>();
List<Transform> allCreations = new List<Transform>();
public GameObject objet;
int i=0;
// Use this for initialization
void Start ()
{
}
// Update is called once per frame
void Update ()
{
if (Input.GetKeyDown (KeyCode.T)) {
i++;
objet = new GameObject ("objet" + i);
list_objet.Add (objet);
allCreations.Add (objet.transform);
objet.transform.rotation = list_objet[i-1].GetComponent<Transform> ().rotation;
}
}
}
merci
Re: erreurs de retour des composantes de rotation
Publié : 23 Mai 2019 13:04
par Max
Hello,
c'est une question d'algo simple.
Quand tu appuis sur T, i passe alors à 1, tu ajoutes ton objet créé à
list_objet (qui contient donc un premier élément),
donc forcément quand tu fais
Code : Tout sélectionner
objet.transform.rotation = list_objet[i-1].GetComponent<Transform> ().rotation;
revient à
Code : Tout sélectionner
objet.transform.rotation = list_objet[0].GetComponent<Transform> ().rotation;
ce qui équivaut à dire que la rotation de l'objet est égale à ... elle même...