Page 1 sur 1

Changer direction controller selon angle de la caméra

Publié : 08 Sep 2020 16:23
par simiji
ok je m'explique ; j'ai créé une scène avec une caméra qui tourne à 360 ° autour du personnage et de la scène.

Le problème est que lorsque je change d'angle de vue, le personnage garde les mêmes commandes, donc la gauche et la droite sont inversées dès que la caméra tourne.

j'aimerais faire en sorte que les commandes du perso évolue selon l'angle de vue mais je n'ai pas encore trouvé de solution... j'ai essayé lookAt() mais cela ne règle pas le problème.

Auriez-vous une idée de comment faire ?

Re: Changer direction controller selon angle de la caméra

Publié : 08 Sep 2020 17:13
par boubouk50
Il te faut gérer les déplacements en fonction des axes locaux de la caméra, au lieu de ceux du personnage.

Attention, il ne faut pas prendre directement les axes locaux, mais une projection normalisée sur le plan World, sinon les axes forward et - forward seront inclinés vers le bas et le haut (respectivement) car la caméra est en hauteur par rapport au personnage.

Re: Changer direction controller selon angle de la caméra

Publié : 08 Sep 2020 18:49
par simiji
boubouk50 a écrit :
08 Sep 2020 17:13
Il te faut gérer les déplacements en fonction des axes locaux de la caméra, au lieu de ceux du personnage.

Attention, il ne faut pas prendre directement les axes locaux, mais une projection normalisée sur le plan World, sinon les axes forward et - forward seront inclinés vers le bas et le haut (respectivement) car la caméra est en hauteur par rapport au personnage.
Merci pour ta réponse :D

Comment peut-on faire ça ?

Re: Changer direction controller selon angle de la caméra

Publié : 09 Sep 2020 08:48
par boubouk50
Je t'ai expliqué le principe.
Les axes locaux de la camera: soit tu fais une référence à la caméra et tu choppes le forward et le right, soit ta caméra est la caméra principale et tu as directement accès via Camera.main.
Pour une projection de vecteur sur un plan, tu as une méthode toute faite depuis la classe Vector3: ProjectOnPlane
Enfin, pour normaliser, tu as Vector3.Normalize.