Hello,
Je tombe sur un problème de trigo qui est un peu complexe pour moi et qui, j'en suis sûr, est assez simple pour ceux qui connaissent bien leur trigonométrie.
J'ai 2 éléments. Un point de référence qui ne bouge jamais. Il tire un rayon sur son coté jusqu’à détecter une face de l'objet B. Grâce à ce lancer de rayon, je peux connaitre la normale de la face sur laquelle je viens de tomber. Ce que je voudrais, c'est trouver une rotation à appliquer à mon élément B pour que la normale repasse exactement par le point de référence.
En gros, je veux aligner l'objet B rapport au point de référence.
Voilà 2 images pour bien comprendre mon soucis.
Ma situation initiale :
(Le rayon vert est le rayon tiré depuis mon point de référence. Le rayon bleu est le rayon crée grâce à la position du Hit et de la normale de la face)
Ma situation espérée :
Quelqu'un aurais une idée ?
Attention : Bien sûr, sur cet exemple j'ai volontairement tourné l'objet B pour créer ce décalage. Mais je veux pouvoir trouver la formule pour aligner les éléments.
Aligner un objet par rapport à une normale
Re: Aligner un objet par rapport à une normale
Si ça peut t'aider, sache que tu peux directement assigner une valeur pour les vecteurs de direction du transform (forward,up,right) de ton gameobject.
Par exemple :
Tu as aussi la fonction lookat ( https://docs.unity3d.com/ScriptReferenc ... ookAt.html ) qui te permet de pointer dans une direction, et en spécifiant aussi le vecteur up.
Tu devrais t'en sortir avec ça
Par exemple :
Code : Tout sélectionner
transform.up = new Vector3( 0.3f , 0.2f , 0.1f);
Tu devrais t'en sortir avec ça
- TyxLePirate
- Messages : 6
- Inscription : 02 Juil 2018 10:41
- Localisation : Bordeaux
- Contact :
Re: Aligner un objet par rapport à une normale
Comme l'as dit mon VDD, la fonction Transform.LookAt est plutôt efficace !
J'utilise également une methode dans un de mes projets qui consiste à ecrire de la manière suivante :
ou transform est ton objet B, et Wall l'objet de référence (de type RaycastHit)
J'utilise également une methode dans un de mes projets qui consiste à ecrire de la manière suivante :
Code : Tout sélectionner
transform.forward = -Wall.normal;