[RESOLU][DB-AL]Problème avec transform.Rotate

Pour les scripts écrits en C#
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :

Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé

Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie

Exemple :

[DB-RS] Mouvement perso multijoueur
eljeronimooo
Messages : 17
Inscription : 29 Sep 2018 17:25

[RESOLU][DB-AL]Problème avec transform.Rotate

Message par eljeronimooo » 11 Déc 2018 18:52

Bonjour, je réalise un petit script très simple pour me déplacer dans ma scène In game.
Comme vous le voyez ma sourit (liée aux inputs "Hortizontal" et "Vertical") fait bouger la caméra sur les axes X et Y.
Seulement lorsque je bouge ma sourit la caméra bouge sur les 3 axes, une légère rotation en Z intervient malgré moi :(
J'ai essayé de bouger l'axe X tout seul, c'est parfait. L'axe Y tout seul, aussi. Mais quand les deux bouges l'axe Z est modifié.

Code : Tout sélectionner

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class God : MonoBehaviour {

    public float jumpSize = 5;
    public float movingSpeed = 5;
    public float runSpeed = 20;
    public float mousseSensibility = 50;

    //Private properties
    Vector3 movingMe;
    Vector3 rotateMe;
	
	// Update is called once per frame
	void Update () {
        movingMe = Vector3.zero;
        rotateMe = Vector3.zero;

        //Calculate moving
        if (Input.GetButton("Jump"))
        {
            movingMe.y = jumpSize;
        }
        if (Input.GetButton("Crouch"))
        {
            movingMe.y = -jumpSize;
        }
        movingMe.x = Input.GetAxis("Horizontal") * movingSpeed;
        movingMe.z = Input.GetAxis("Vertical") * movingSpeed;

        //Run
        if (Input.GetButton("Run"))
        {
            movingMe.x *= runSpeed;
            movingMe.z *= runSpeed;
        }

        //Calculate rotate
        rotateMe.x = -Input.GetAxisRaw("Mouse Y") * mousseSensibility;
        rotateMe.y = Input.GetAxisRaw("Mouse X") * mousseSensibility;

        //Transform object
        transform.Translate(movingMe * Time.deltaTime);
        transform.Rotate(rotateMe * Time.deltaTime);
    }
}
J'ai aussi essayé de re-modifier la localRotation en forcenant la valeur Z à 0 en ajoutant le code suivant après le Rotate, sans effet.

Code : Tout sélectionner

Quaternion newRotation = transform.localRotation;
newRotation.z = 0;
transform.localRotation = newRotation;
Si quelqu'un peut m'aider se serait vraimement sympa :) Merci d'avance
Dernière édition par eljeronimooo le 11 Déc 2018 20:09, édité 1 fois.

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

Re: [DB-AL]Problème avec transform.Rotate

Message par Max » 11 Déc 2018 19:29

Bonsoir,

pour ta rotation essais:

Code : Tout sélectionner

transform.eulerAngles += rotateMe * Time.deltaTime;
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

eljeronimooo
Messages : 17
Inscription : 29 Sep 2018 17:25

Re: [DB-AL]Problème avec transform.Rotate

Message par eljeronimooo » 11 Déc 2018 20:09

Merci Max, c'est pile ce que je cherchais, au top :)

Répondre

Revenir vers « (C#) CSharp »