Créer un jeu avec Unity 3D

Accéder aux GameObjects

ToutApprendre

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

- Auteur : ToutApprendre

- Parution : 13 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. Accéder aux GameObjects

- II-A-1. La méthode Find()

- II-A-2. Accéder à un objet avec les tags

- II-A-3. Accéder à plusieurs objets ayant un même tag

- III. Commenter

- IV. Remerciements

- Navigation

Navigation

Tutoriel précédent : Interaction avec l'utilisateur

Sommaire

Tutoriel suivant : les quaternions

I - Vidéo

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

II - Ce qu'il faut retenir

II-A - Accéder aux GameObjects

L'objectif est d'accéder à un GameObject, sans que le script ne soit nécessairement attaché à ce GameObject.

II-A-1 - La méthode Find()

La classe GameObject contient une méthode Find() utilisable comme suit :

#pragma strict

var go:GameObject;

function Start() {
go = GameObject.Find("Cube");
}

function Update() {
go.transform.Rotate(Vector3(0, 10 * Time.deltaTime, 0));
}

Tout comme pour la méthode GetComponent() que nous avons vu dans le treizième tutoriel, la méthode Find() ne peut pas être appelée directement à la déclaration d'une variable.

II-A-2 - Accéder à un objet avec les tags

Les tags permettent de marquer les objets afin de les retrouver facilement, notamment dans un script.

La méthode à utiliser est maintenant FindWithTag() :

#pragma strict

var go:GameObject;

function Start() {
go = GameObject.FindWithTag("Player");
}

function Update() {
go.transform.Rotate(Vector3(0, 10 * Time.deltaTime, 0));
}

II-A-3 - Accéder à plusieurs objets ayant un même tag

Les méthodes précédentes, bien que pleinement fonctionnelles, ne peuvent accéder qu'à un seul GameObject à la fois.

Pour accéder à plusieurs d'entre eux (possédant un même tag), la fonction à utiliser est FindGameObjectsWithTag() :

#pragma strict

var goList:Array;

function Start() {
goList = GameObject.FindGameObjectsWithTag("Player");
}

function Update() {
for(var go:GameObject in goList) {
go.transform.Rotate(Vector3(0, 10 * Time.deltaTime, 0));
}
}

Bien entendu, comme nous récupérons plusieurs objets, il nous faut un tableau pour les contenir et une boucle pour appliquer la rotation sur chacun d'eux.

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 : Interaction avec l'utilisateur

Sommaire

Tutoriel suivant : les quaternions