Créer un jeu avec Unity 3D

Les quaternions

ToutApprendre

- Titre : Créer un jeu avec Unity 3D

- Auteur : ToutApprendre

- Parution : 17 octobre 2014

- Licence : Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright ® 2014 Équipe rubrique 2D/3D/Jeux. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Sommaire

- Navigation

- I. Vidéo

- II. Ce qu'il faut retenir

- II-A. Les quaternions

- II-A-1. Pointer un objet vers la caméra

- II-A-2. Adoucir le pointage

- II-A-3. Mimer une rotation

- III. Commenter

- IV. Remerciements

- Navigation

Navigation

Tutoriel précédent : accéder aux GameObjects

Sommaire

Tutoriel suivant : instancier des objets

I - Vidéo

Animation en format "youtube" non supportée.
Contenu uniquement consultable en ligne à cette adresse :
https://www.youtube.com/watch?v=xWZSDEDZPRg

II - Ce qu'il faut retenir

II-A - Les quaternions

Les quaternions permettent de calculer les rotations dans Unity 3D.

Un quaternion est constitué de quatre composants : x, y, z et w. Ce dernier représente l'angle de rotation pour une rotation autour de l'axe constitué par x,y,z.

Les quaternions possèdent l'avantage de ne pas souffrir du Gimbal Lock et peuvent facilement être interpolés.

II-A-1 - Pointer un objet vers la caméra

Le but est de faire en sorte que l'objet pointe toujours vers la caméra. Pour cela, on utilise la fonction LookRotation() de la classe Quaternion.

#pragma strict

var target:Transform;
var direction:Vector3;

function Start() {
target = GameObject.Find("Main Camera").transform;
}

function Update() {
direction = target.position - this.transform.position;

transform.rotation = Quaternion.LookRotation(direction);
}

II-A-2 - Adoucir le pointage

Maintenant, nous allons utiliser la fonction Slerp(), de la classe Quaternion, qui effectue une interpolation entre deux quaternions.

#pragma strict

private var target:Transform;
private var direction:Vector3;
private var speed:float = 0.1;

function Start() {
target = GameObject.Find("Main Camera").transform;
}

function Update() {
direction = target.position - this.transform.position;

transform.rotation = Quaternion.Slerp(transform.rotation,Quaternion.LookRotation(direction),Time.deltaTime*speed);
}

II-A-3 - Mimer une rotation

Finalement, nous cherchons à reproduire la rotation de la caméra à notre objet :

#pragma strict

private var target:Transform;
private var direction:Vector3;
private var speed:float = 0.1;

function Start() {
target = GameObject.Find("Main Camera").transform;
}

function Update() {
direction = target.position - this.transform.position;

transform.rotation = Quaternion.Slerp(transform.rotation,target.rotation,Time.deltaTime*speed);
}

III - Commenter

Vous pouvez commenter et donner vos avis dans la discussion associée sur le forum, ou encore, poser vos questions dans le forum Unity.

IV - Remerciements

Nous remercions « ToutApprendre » pour l'élaboration et la réalisation de ces vidéos. Vous pouvez retrouver sa chaîne YouTube en suivant ce lien.

Navigation

Tutoriel précédent : accéder aux GameObjects

Sommaire

Tutoriel suivant : instancier des objets