[Résolu] Problème de caméra qui "saute"

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
Avatar de l’utilisateur
Aiyor
Messages : 24
Inscription : 14 Juin 2017 12:08

Re: Problème de caméra qui "saute"

Message par Aiyor » 30 Juin 2017 14:13

Badfly a écrit :Un bond, ou se téléporter comme tu veux.

Position bah c'est la position en axe Y, X (transform.position)
et rotation bah c'est la rotation de la caméra sur son axe Y(transform.rotation)

Mon problème c'est que quand je souhaite faire pivoter ma caméra, elle va se téléporter (et je précise, elle ne se téléporte pas sur son axe X,Y,Z, mais juste l'angle Y va admettons passer de 0, à 45 d'un coup).

Petit exemple concret. Je lance le jeu, je fais pivoter la caméra sur son axe Y, c'est fluide, c'est jolie.
Je la place à transform.rotation.Y = 45.
Ensuite, j'appuis sur Espace, la caméra va donc se remettre à 0 (transform.rotation.Y = 0)
Et à ce moment là, si je souhaite la faire pivoter de nouveau, même juste très légèrement, elle va se remettre directement à
transform.rotation.Y = 45.
Pourtant, après cette "téléportation", "bond", on peut appeler comme on veut hein, je peux la faire pivoter sur son axe Y avec fluidité, il n'y a plus de "bond". (Mais si je la recentre grâce à Espace, elle va refaire un "bond")
Le je place la caméra à transform.rotation.Y = 20, puis espace. Quand je voudrais faire pivoter la caméra, elle se remettra d'abord à transform.rotation.Y = 20 avant de se pivoter normalement.


Le bout de script que j'ai mis est le même que plus haute (sans le if) tout les scripts que j'ai mis sont sur le même fichier. Et ce script est collé sur la caméra.

Et je pense pas que ça intéresse que je mette les bouts de code quand je déplace la caméra avec les flèches. ^^

Mais je répète, la caméra pivote bien sur elle même, elle se déplace bien sur son axe X, Y.
Quand j'appuis sur espace, elle se place bien derrière le jouer, et s'oriente vers le joueur. Tous cela fonctionne bien. Donc a part les bouts de code pour faire pivoter la caméra, et pour replacer la caméra, je ne vois pas ce qui peut être utile.
Et le tout est dans la fonction Update de la caméra.

Et nan, ta solution "au piff" ne fonctionne pas :)

Salut, je vais peut être dire une bêtise mais d'après ton code, tu renseigne ta rotationY lorsque tu bouge ta souris, on va dire que ça stock 20 (rotation d'avant + input souris).
Ensuite ton code de la barre d'espace s'active quand tu appuie dessus. la cam se repositionne.
Puis tu retouches à ta souris, c'est normal que rotationY ait toujours 20 . Tu devrais pas mettre à jour ta rotationY DANS le code de ta barre d'espace? Genre à la fin de la méthod ? En gros, comme le dis Evereal, mais pas la remettre à zéro, la mettre à la position actuelle ?


Edit : Oups méga grilled par Boubouk, mais il le dit mieux que moi, c'était l'idée que j'essayais d'exprimer :D

Badfly
Messages : 62
Inscription : 19 Mai 2017 14:46

Re: Problème de caméra qui "saute"

Message par Badfly » 30 Juin 2017 14:24

Merci aiyor de ta réponse :) Alors oui en effet, cela fonctionne. Mais j'aurais aimé ne pas le mettre en dur. Mais bon ça fonctionne :d C'est déjà ça xD

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

Re: Problème de caméra qui "saute"

Message par boubouk50 » 30 Juin 2017 14:45

Ton -34.42f correspond bien a une variable quelque part, non? Il te suffit de remplacer le dur par cette variable. Ça doit être le transform.localRotation.eulerAngles.y d'un de tes gameObjects de placement, je suppose.
"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

Badfly
Messages : 62
Inscription : 19 Mai 2017 14:46

Re: Problème de caméra qui "saute"

Message par Badfly » 30 Juin 2017 18:10

Exactement :) Merci à tous sujet clos. Je met le bout de scripts définitif pour les futurs génération ;)

Code : Tout sélectionner

 public void Start()
 {
  	mainCamera = GameObject.Find("Main Camera (1)");
       	posCamera = GameObject.Find("posCamera");
  }
  
  public void Update()
  {
            if (Input.GetKeyDown(KeyCode.Space)) // Recentre la camera sur le joueur
            {                
                transform.position = posCamera.GetComponent<Transform>().position;
                transform.rotation = posCamera.GetComponent<Transform>().rotation;
                mainCamera.GetComponent<Transform>().rotation = posCamera.GetComponent<Transform>().rotation;
                rotationY = posCamera.GetComponent<Transform>().localEulerAngles.y;                
                rotationX = posCamera.GetComponent<Transform>().localEulerAngles.x;
            }

            if (Input.GetMouseButton(1)) // Oriente la camera avec le Clique Droit
            {
                rotationY += Input.GetAxis("Mouse X") * sensitivity * Time.deltaTime;
                rotationX -= Input.GetAxis("Mouse Y") * sensitivity * Time.deltaTime;

                transform.rotation = Quaternion.Euler(0, rotationY, 0);
                mainCamera.GetComponent<Transform>().rotation = Quaternion.Euler(rotationX, transform.localEulerAngles.y, transform.localEulerAngles.z);                
            }
  }
            

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

Re: [Résolu] Problème de caméra qui "saute"

Message par boubouk50 » 03 Juil 2017 09:36

Info: la caméra principale peut se trouver directement avec

Code : Tout sélectionner

Camera.main
si elle est tagué MainCamera depuis l'inspector.

.GetComponent <Transform> () peut être raccourci en utilisant .transform
"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

Répondre

Revenir vers « Scripting »