Créer un jeu avec Unity 3D

Les collisions et les déclencheurs

L'auteur

Profil Pro

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

Navigation

Tutoriel précédent : lancer de rayon

 

Sommaire

 

Tutoriel suivant : les interfaces utilisateur

I. Vidéo


Cliquez pour lire la vidéo



II. Ce qu'il faut retenir

II-A. Les collisions

Le RigidBody est un composant qui simule la physique. Pour que la collision soit respectée, les composants doivent avoir un RigidBody.

Lorsqu'une collision a lieu, Unity 3D envoie un message pour indiquer la collision aux objets qui rentrent en collision. Ce message peut être attrapé par les scripts attachés aux objets en collision grâce à la fonction OnCollisionEnter() :

 
Sélectionnez
function OnCollisionEnter(col:Collision){
    Debug.Log("Collision");
}

Le paramètre de type Collision permet à Unity 3D de donner des informations supplémentaires sur la collision comme le RigidBody touché ou encore, le GameObject.

 
Sélectionnez
function OnCollisionEnter(col:Collision){
    Debug.Log("Collision avec " + col.gameObject.name);
}

II-A-1. Déplacer un objet ayant un RigidBody

L'utilisation des méthodes Translate(), Rotate() que nous avions vues auparavant permet bien de déplacer un objet, mais elles ont aussi la particularité de fausser la simulation physique.
Pour éviter tout souci, les objets possédant un RigidBody, et donc, une entité physique qui sera simulée par le moteur, doivent être déplacés en leur appliquant des forces :

 
Sélectionnez
function Update(){
    rigidbody.AddForce(Vector3.forward * Time.deltaTime * 8);
}

II-B. Les déclencheurs (triggers)

Les déclencheurs utilisent les « collider » afin de détecter si l'objet est à travers un autre. De plus, pour utiliser les objets comme déclencheurs, ils n'ont pas besoin de RigidBody (ils ne seront pas pris en compte pas la simulation physique, mais pour qu'un objet soit détecté, celui-ci doit avoir un rigidbody). En bref, les déclencheurs permettent de provoquer une action, lorsqu'un objet entre dans l'autre. Généralement, ils ne sont pas visibles dans le jeu.

Comme précédemment, vous pouvez, à l'aide d'un script, savoir si un objet allume un déclencheur en passant dans celui-ci :

 
Sélectionnez
function OnTriggerEnter(col:Collision){
    Debug.Log("Trigger");
}

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 : lancer de rayon

 

Sommaire

 

Tutoriel suivant : les interfaces utilisateur

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.