Page 1 sur 2

[RESOLU] Caméra tourne sur Z

Publié : 01 Oct 2020 10:30
par ced_le_dingue
Bonjour à tous,

J'ai une petite chose que je voudrai éviter lorsque je tourne ma caméra autour d'un objet.

1) J'ai placé ma caméra dans un empty pour la faire tourner autour de celui ci :
Image
2) Pour ce faire, j'ai fait ce code:

Code : Tout sélectionner

void Update()
{
GameObject.Find("RotationCameraCube").GetComponent<Transform>().Rotate(Input.GetAxis("JoystickVerticalRight") * 300f * Time.deltaTime, 0, 0);
GameObject.Find("RotationCameraCube").GetComponent<Transform>().Rotate(0, Input.GetAxis("JoystickHorizontalRight") * 300f * Time.deltaTime, 0);
}
3) Voila le résultat, ça marche sauf que j'imagine que je n'utilise pas les bonnes choses pour le faire car je voudrai, à la manière d'un FPS, que ma caméra ne parte pas en vrille sur l'axe Z:
Image

Merci beaucoup pour votre aide :)

Re: Caméra tourne sur Z

Publié : 01 Oct 2020 11:01
par jmhoubre
Bonjour,

déjà, met ton composant en cache, c'est une très mauvaise pratique que de faire des Find dans une fonction Update.

Code : Tout sélectionner

private Transform rotationCube = null;

private void Start () {
	rotationCube = GameObject.Find("RotationCameraCube").GetComponent<Transform>();
}

private void Update () {
	Vector3 input;
	input = new Vector3 (Input.GetAxis("JoystickVerticalRight"), Input.GetAxis("JoystickHorizontalRight"), 0f);
	input *= 300f * Time.deltaTime;
	rotationCube.Rotate (input);
}
Pour ta question, je vais regarder de plus près.

Re: Caméra tourne sur Z

Publié : 01 Oct 2020 11:03
par ced_le_dingue
Salut Jm,

Super merci pour ça, je vais modifier ma façon de faire alors et faire comme tu m'a dit.

D'accord parfait merci beaucoup ;)

Re: Caméra tourne sur Z

Publié : 01 Oct 2020 11:11
par jmhoubre
Quelques questions :
- le script est sur quel objet ?

Re: Caméra tourne sur Z

Publié : 01 Oct 2020 11:13
par jmhoubre
Re,

j'ai mis le script sur l'objet vide.
Comme je n'ai pas de Joystick, j'utilise le clavier, mais cela fonctionne.

Re: Caméra tourne sur Z

Publié : 01 Oct 2020 11:17
par ced_le_dingue
Le script est sur le cube. ça a une importance? :(

Pour les input j'ai inversé les axes tu as raison... je me suis emmêlé pour rien à ce niveau là

ça fonctionne c'est à dire qu'en mettant le script sur la caméra plutot que sur le cube ça règle le problème?

Re: Caméra tourne sur Z

Publié : 01 Oct 2020 11:25
par jmhoubre
Si ton souci est réglé, passe le sujet en [Résolu].

Sinon, précise le problème, car chez moi cela fonctionne correctement.

Et oui, on peut mettre le script sur le cube. Comme tu cherches l'objet RotationCameraCube, c'est à celui-ci que s'applique la fonction Rotate (). Mais ce n'est pas trop logique. Le script devrait être sur l'objet
RotationCameraCube.

Autre petit conseil, quand tu scriptes, essaie de décomposer comme je l'ai fait : on récupère l'input, on le multiplie, puis on l'applique dans une rotation. C'est plus simple à lire, et surtout à relire, donc à debugger. Et je ne pense pas qu'on perde beaucoup de cycles de processeur à faire cela.

Re: Caméra tourne sur Z

Publié : 01 Oct 2020 11:32
par ced_le_dingue
Non malheureusement j'ai refait le code comme tu me l'a suggéré, mais le resultat est identique ça tourne toujours comme sur le gif que j'ai mis plus haut (je me sert des joystick n'oublions pas :lol: )

Je suis en train de regarder là et je crois qu'il s'agit d'une histoire de Lookat, je vais regarder ça.

(Oui pas de soucis je m'habituerai à faire comme ça tu as raison)

Re: Caméra tourne sur Z

Publié : 01 Oct 2020 11:50
par jmhoubre
Si tu bouges sur l'axe horizontal, et seulement après sur l'axe vertical, ça donne quoi ?
Parce que si tu fais une rotation d'axe x et en même temps d'axe y, ça donne une rotation d'axe z il me semble (je vais vérifier après le repas).

Re: Caméra tourne sur Z

Publié : 01 Oct 2020 12:07
par ced_le_dingue
Je ne sais pas si ça rend très bien de les faire l'un après l'autre (je prends comme modèle la caméra d'un jouer dans Call Of Duty, on peut les bouger en même temps mais ça regarde toujours en face, du coup c'est pour ça que je crois deviner que Lookat peut régler mon soucis, je ne sais pas....)

Pas de soucis merci jm, prends ton temps t'inquiètes pas. Je vais manger aussi et ensuite j'essaye aussi de mon coté (avec Lookat notamment)

Petit update: au final, utiliser un Character controller ne serait il pas la solution? (je ne m'en suis jamais servit encore, faudra que j'apprenne du coup)