Ce n'est pas forcément une mauvaise expression et il n'y a aucun problème à ne pas comprendre, sinon tu ne poserais pas la question. C'est juste que de mon côté, sans explication c'est difficile de comprendre. Décrire le problème tel quel (comme tu viens de le faire, en plus détaillé parfois) est la seule chose que tu puisses faire pour m'expliquer.
Et là, clairement, c'est l'initialisation.
La souris est constamment connectée contrairement à ton doigt. Donc, il n'y a qu'une seule initialisation pour elle, au lancement du jeu, donc pas besoin de se soucier des cas particuliers. Contrairement à ton doigt, qui touche puis ne touche plus, etc. Il n'est pas continu. Il faut donc régler le problème de la discontinuité.
Je pense que seul le premier delta est en cause, car tu passes de 0 à quelque chose en une seule frame.
Cela se gèrera avec les
touchPhases. Elles décrivent les phases d'un touch: Debut, Mouvement, Repos, Fin, Annulation.
Ici, il faut que tu testes dans quelle phase tu te situes avant de continuer (s'il y a touch). Si tu es dans la phase de début, alors il ne faut pas bouger la caméra pour éviter la saute.
Essaie:
Code : Tout sélectionner
public float rotationX;
public float rotationY;
public float sensitivity = 5f;
void Update () {
//Tester si le doigt touche l'écran
if (Input.touchCount > 0) {
//Ecran touché -> Récupération du delta
rotationX -= Input.GetAxis("Mouse Y") * sensitivity;
rotationY += Input.GetAxis("Mouse X") * sensitivity;
//Appliquer la transformation uniquement si ce n'est pas le premier touch
if (Input.GetTouch (0).phase != TouchPhase.Began)
transform.rotation = Quaternion.Euler(rotationX, rotationY, 0);
}
}