bonjour,
La fonction Instantiate ne m'intéresse pas.
J'ai crée donc dynamiquement un objet:
GameObject Spawn2=new GameObject("Spawn2");
il est facile de lui attribuer une compsante Transform de position et de scale mais pas de rotation
Si j'écris:
Spawn2.transform.rotation=new Vector3(rot_x,rot_y,rot_z);
ça ne marchera pas alors que mon but est que dès que Spawn2 est généré(dynamiquement),sa composante de rotation ait pour vecteur(rot_x,rot_y,rot_z)
Je suis obligé de passer par
Spawn2.transform.rotation =Quaternion.Euler(x,y,z);
seulement
rot_x n'est pas égal à x
rot_y n'est pas égal à y
rot_z n'est pas égal à z
Je dois alors faire une petite conversion mais je ne sais pas comment(objet de cette question) afin d'obtenir après:
Spawn2.transform.rotation =Quaternion.Euler(x,y,z);
rot_x égal à x
rot_y égal à y
rot_z égal à z
merci de votre aide
ajouter le bon vecteur transform.rotation
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
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
- Kaloverian
- Messages : 345
- Inscription : 10 Août 2016 03:03
Re: ajouter le bon vecteur transform.rotation
Bonjour,
PS: il aurait été sympa d'apporter une réponse dans ton sujet précédent: viewtopic.php?f=89&t=17547
Spawn2.transform.Rotate(rot_x,rot_y,rot_z);
devrait correspondre à ce que tu cherches je pense.PS: il aurait été sympa d'apporter une réponse dans ton sujet précédent: viewtopic.php?f=89&t=17547
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
- Kaloverian
- Messages : 345
- Inscription : 10 Août 2016 03:03
Re: ajouter le bon vecteur transform.rotation
Non même avec:
Spawn2.transform.Rotate(rot_x,rot_y,rot_z);
le problème reste le même
pour :
rot_x=90
rot_y=120
rot_z=0
la composante de rotation du Spawn2 généré dynamiquement est hélas:(90,0,-120) et non(90,120,0)
Spawn2.transform.Rotate(rot_x,rot_y,rot_z);
le problème reste le même
pour :
rot_x=90
rot_y=120
rot_z=0
la composante de rotation du Spawn2 généré dynamiquement est hélas:(90,0,-120) et non(90,120,0)
Re: ajouter le bon vecteur transform.rotation
oui en valeur, mais en fait c'est pareil. Ton objet à bien l'attitude souhaité.Kaloverian a écrit : ↑13 Mars 2020 17:13la composante de rotation du Spawn2 généré dynamiquement est hélas:(90,0,-120) et non(90,120,0)
C'est le fait des conversions Euler->Quaternion (fonction Transform.Rotation()), puis Quarternion->Euler (restitution visu inspector).
D'ailleurs tu peux tester directement dans l'inpector, entrer les composants (90,0,-120) puis essayer en suite avec (90,120,0), tu verras ton objet aura la même rotation.
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
- Kaloverian
- Messages : 345
- Inscription : 10 Août 2016 03:03
Re: ajouter le bon vecteur transform.rotation
alors je dois procéder à 2 conversions?
Euler-->Quaternion
Quaternion-->Euler
Euler-->Quaternion
Quaternion-->Euler
Re: ajouter le bon vecteur transform.rotation
Non. Ton souhait c'est d'entrer des valeurs d'angle pour positionner ton objet. Après que la visu dans l'inspector amène à des valeurs non identiques, est-ce un problème ? (du moment que ta rotation est visuellement bien ce qu'elle doit être).Kaloverian a écrit : ↑13 Mars 2020 17:39alors je dois procéder à 2 conversions?
Euler-->Quaternion
Quaternion-->Euler
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
- Kaloverian
- Messages : 345
- Inscription : 10 Août 2016 03:03
pour mon projet un peu méticuleux de calculs,,c'est un problème.
Je pense pouvoir m'en sortir avec ce code trouvé:
Je pense pouvoir m'en sortir avec ce code trouvé:
Code : Tout sélectionner
public static Quaternion EulerToQuaternion(Vector3 euler)
{
float xOver2 = euler.x * Mathf.Deg2Rad * 0.5f;
float yOver2 = euler.y * Mathf.Deg2Rad * 0.5f;
float zOver2 = euler.z * Mathf.Deg2Rad * 0.5f;
float sinXOver2 = Mathf.Sin(xOver2);
float cosXOver2 = Mathf.Cos(xOver2);
float sinYOver2 = Mathf.Sin(yOver2);
float cosYOver2 = Mathf.Cos(yOver2);
float sinZOver2 = Mathf.Sin(zOver2);
float cosZOver2 = Mathf.Cos(zOver2);
Quaternion result;
result.x = cosYOver2 * sinXOver2 * cosZOver2 + sinYOver2 * cosXOver2 * sinZOver2;
result.y = sinYOver2 * cosXOver2 * cosZOver2 - cosYOver2 * sinXOver2 * sinZOver2;
result.z = cosYOver2 * cosXOver2 * sinZOver2 - sinYOver2 * sinXOver2 * cosZOver2;
result.w = cosYOver2 * cosXOver2 * cosZOver2 + sinYOver2 * sinXOver2 * sinZOver2;
return result;
}