IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

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 ni 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.