Bonjour à tous,
Je viens vers vous car je bloque depuis deux jours sur un problème qui peut paraître banal mais néanmoins assez embêtant. Voila, j'ai commencé la conception d'un space shooter et voici le code utilisé pour le mouvement et la rotation du vaisseau :
float moveHorizontal = Input.GetAxis("Horizontal");
float moveVertical = Input.GetAxis("Vertical");
Vector3 movement = new Vector3(moveHorizontal, moveVertical, 1.0f);
_rigidbody.velocity = movement * _speed;
//rotation du vaisseau
_angleHorizontal = _speed * moveHorizontal;
_angleVertical = _speed * -moveVertical;
_rigidbody.rotation = Quaternion.Euler( _angleVertical, _angleHorizontal, _rigidbody.velocity.x * - tilt);
Ce code marche très bien et le vaisseau fait un mouvement harmonieux et agréable. Seulement voilà, je chercher à reproduire ce mouvement sauf que je n'utilise pas de clavier ni de souris, les commandes sont envoyées par une autre classe qui reçoit des chiffres parle réseau (mise en place d'un socket) et renvoie à la classe qui dirige le vaisseau des sendMessage en appelant les fonctions ToTheRight, ToTheLeft etc... ce qui me pose problème c'est l'intérieur de ces fonctions, par exemple pour ToTheRight j'ai fais :
Vector3 movement = new Vector3(Input.GetAxis("Horizontal"), 0.0f, 1.0f);
_rigidbody.velocity = (movement * _speed);
_rigidbody.MoveRotation(Quaternion.Euler(0.1f,0.1f,_rigidbody.velocity.x * -tilt));
Mais la rotation se fait d'un coup, on obtient des rotations saccadées c'est très moche.
Croyez-vous qu'il existe un moyen de rendre la rotation plus fluide? Je ne pense pas qu'il soit possible dans mon cas d'utiliser les Input, qu'en pensez-vous?
Toute aide est la bienvenue, merci d'avance.
Partager