Créer un jeu avec Unity 3D

Les collisions et les déclencheurs

ToutApprendre

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

- Auteur : ToutApprendre

- Parution : 27 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 collisions

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

- II-B. Les déclencheurs (triggers)

- III. Commenter

- IV. Remerciements

- Navigation

Navigation

Tutoriel précédent : lancer de rayon

Sommaire

Tutoriel suivant : les interfaces utilisateur

I - Vidéo

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

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() :

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.

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 :

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 :

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