erreurs de retour des composantes de rotation

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
Avatar de l’utilisateur
Kaloverian
Messages : 336
Inscription : 10 Août 2016 03:03

erreurs de retour des composantes de rotation

Message par Kaloverian » 08 Mai 2019 22:21

bonjour,

Après déclaré initialement pi

Code : Tout sélectionner

float pi=Mathf.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

Avatar de l’utilisateur
Max
Messages : 8764
Inscription : 30 Juil 2011 13:57
Contact :

Re: erreurs de retour des composantes de rotation

Message par Max » 09 Mai 2019 07:54

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.
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

Avatar de l’utilisateur
Kaloverian
Messages : 336
Inscription : 10 Août 2016 03:03

Re: erreurs de retour des composantes de rotation

Message par Kaloverian » 23 Mai 2019 02:16

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

Avatar de l’utilisateur
Max
Messages : 8764
Inscription : 30 Juil 2011 13:57
Contact :

Re: erreurs de retour des composantes de rotation

Message par Max » 23 Mai 2019 13:04

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...
Image
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ

Répondre

Revenir vers « (C#) CSharp »