Probleme de rotation de camera en 3D

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
Adel Griffond
Messages : 1
Inscription : 13 Mars 2020 22:16

Probleme de rotation de camera en 3D

Message par Adel Griffond » 13 Mars 2020 23:36

Bonjour à tous
Actuellement je réalise mon premier jeu a la 1 personne, et j'ai un probleme avec la rotation de ma camera
Je compte faire en sorte que le joueur puisse regarder de haut en bas et de droite à gauche, mais lorsque les deux rotations sont en même temps dans le script, la camera tourne dans tous les sens. Voici mon script :

Code : Tout sélectionner

		if(Input.GetKeyDown(KeyCode.Mouse1))
			_mouse = Input.mousePosition;
		if(Input.GetKey(KeyCode.Mouse1)) 
		{
						
			int _mousePosy = (int)(Input.mousePosition.y - _mouse.y);			
			int _mousePosx = (int)(Input.mousePosition.x - _mouse.x);
			transform.rotation *= Quaternion.Euler(_mousePosy, _mousePosx, 0);
			_mouse = Input.mousePosition;
		}
Auriez vous une idée de comment regler ce probleme ?

Avatar de l’utilisateur
Max
Messages : 8772
Inscription : 30 Juil 2011 13:57
Contact :

Re: Probleme de rotation de camera en 3D

Message par Max » 14 Mars 2020 11:16

Bonjour et bienvenue sur le forum,

Ton soucis vient de la combinaison des deux angles sur deux axes différents
en passant par transform.rotation *= Quaternion.Euler(_mousePosy, _mousePosx, 0);.

un petit code adapté comme ceci pourrait correspondre à ce que tu cherches à faire:

Code : Tout sélectionner

    [SerializeField] private float speedRotate = 2.0f;

    private float rotX = 0;
    private float rotY = 0;

    // Start is called before the first frame update
    void Start()
    {
        rotX = -transform.rotation.eulerAngles.x;
        rotY = transform.rotation.eulerAngles.y;
    }

    // Update is called once per frame
    void Update()
    {
        if (Input.GetKey(KeyCode.Mouse1))
        {
            rotY = rotY + Input.GetAxis("Mouse X") * speedRotate;
            rotX = rotX + Input.GetAxis("Mouse Y") * speedRotate;
            transform.eulerAngles = new Vector3(-rotX, rotY, 0);
        }
    }
Image
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

Répondre

Revenir vers « Scripting »