Créer un jeu avec Unity 3D

Les quaternions

L'auteur

Profil Pro

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

Navigation

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

 

Sommaire

 

Tutoriel suivant : instancier des objets

I. Vidéo


Cliquez pour lire la vidéo



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.

 
Sélectionnez
#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.

 
Sélectionnez
#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 :

 
Sélectionnez
#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

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

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.