[Résolu][DB - AL] Instancier une 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
Naru
Messages : 11
Inscription : 12 Fév 2017 16:04

[Résolu][DB - AL] Instancier une rotation

Message par Naru » 21 Fév 2017 01:02

Bonjour à tous !

Voici mon soucis: j'ai un objet dont la rotation initiale est (-89,0,0) (que l'on peut donc voir dans le Transform de mon objet, ligne "rotation").
Or je voudrais instancier des objets de ce type. Jusqu'ici j'avais toujours pu utiliser le quaternion identité et je n'arrive pas à utiliser autrement le quaternion. Si j'utilise la fonction quaternion comme ça:

Code : Tout sélectionner

Quaternion(-89,0,0,0)
ça ne marche absolument pas, même si je cast... A la base j'ai donc ça comme ligne de code que le compilateur n'accepte pas:

Code : Tout sélectionner

GameObject objet = (GameObject)Instantiate(Objet, new Vector3(x,(float)1.75,z), Quaternion(-89,0,0,0)); 
Je ne trouve aucun code d'exemple qui n'utilise pas un quaternion prédéfini...
En espérant que ça vous parle !

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

Re: [DB - AL] Instancier une rotation

Message par boubouk50 » 21 Fév 2017 10:44

Ton angle est donné en degré (EulerAngles) alors que les quaternions sont beaucoup plus complexes et ne fonctionnent pas aussi visuellement que les angles d'Euler. Ses valeurs sont comprises (alors je sais plus exactement) entre -1 et 1 ou -π/2 et π/2. (Un truc du genre).
Il ne faut donc pas que tu écrives le quaternion, mais que tu le copies depuis l'objet en question. Ou bien que tu le crées à partir d'un angle d'Euler.

Code : Tout sélectionner

//Créer un quaternion identitaire
Quaternion rotation = Quaternion.identity;
// Assigner un angle de 89 degré sur l'axe X
rotation.eulerAngles = Vector3(89, 0, 0);
//Instancier
GameObject objet = (GameObject)Instantiate(Objet, new Vector3(x,(float)1.75,z), rotation);
"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

zebilamouche
Messages : 38
Inscription : 17 Juin 2016 20:34

Re: [DB - AL] Instancier une rotation

Message par zebilamouche » 21 Fév 2017 14:54

Salut, je pense que tu peux aussi l'écrire de cette façon :

Code : Tout sélectionner

GameObject objet = (GameObject)Instantiate(Objet, new Vector3(x,(float)1.75,z), Quaternion.Euler (new Vector3 (89, 0, 0))););

Naru
Messages : 11
Inscription : 12 Fév 2017 16:04

Re: [DB - AL] Instancier une rotation

Message par Naru » 21 Fév 2017 18:34

Merci pour vos réponses ! J'ai très bien compris vos explications et ça fait plaisir ! Maintenant tout marche ;)

Répondre

Revenir vers « (C#) CSharp »