Créer un jeu avec Unity 3D

Instancier des objets

L'auteur

Profil Pro

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

Navigation

Tutoriel précédent : les quaternions

 

Sommaire

 

Tutoriel suivant : le lancer de rayon

I. Vidéo


Cliquez pour lire la vidéo



II. Ce qu'il faut retenir

II-A. Instancier des objets

À partir d'un script, nous allons pouvoir créer de nouvelles instances de nos objets.

II-A-1. Les préfabriqués (prefab)

Les préfabriqués apparaissent dans le panneau « projects ». Un préfabriqué permet de sauvegarder la configuration spécifique d'un objet et de le rappeler rapidement pour créer un objet ayant les mêmes propriétés.

II-A-2. Créer des objets

Grâce aux préfabriqués, nous pouvons créer des objets ayant certaines propriétés spécifiques. Pour cela, nous écrivons un script qui va générer ces nouveaux objets. Le script est attaché à un « GameObject » vide.

Pour créer un nouvel objet, on utilise la fonction Instantiate(). Afin de ne pas créer les éléments trop rapidement, nous faisons un chronomètre :

 
Sélectionnez
#pragma strict

private var delay:float = 0.5;
private var timeCurrent:float = 0.0;

function Start() {

}

function Update() {
    if (timeCurrent+delay < Time.fixedTime) {
        // Code qui ne s'execute que tous les 'delay'
        
        timeCurrent = Time.fixedTime;
    }
}

Time.fixedTime est une variable contenant le temps actuel depuis le début du jeu.

Maintenant, nous pouvons gérer l'instanciation :

 
Sélectionnez
#pragma strict

private var delay:float = 0.5;
private var timeCurrent:float = 0.0;
var bullet:GameObject;

function Start() {

}

function Update() {
    if (timeCurrent+delay < Time.fixedTime) {
        Instantiate(bullet, transform.position, transform.rotation);
        
        timeCurrent = Time.fixedTime;
    }
}

II-A-3. Détruire des objets

Il est nécessaire de détruire les objets que nous avons créés afin de ne pas surcharger le jeu. En effet, chaque objet créé prend du temps de calcul dans Unity 3D et, à la longue, pourrait provoquer des ralentissements lorsqu'ils deviennent trop nombreux.

Pour cela, on utilise la fonction Destroy() :

 
Sélectionnez
#pragma strict

private var delay:float = 0.5;
private var timeCurrent:float = 0.0;
var bullet:GameObject;

function Start() {

}

function Update() {
    if (timeCurrent+delay < Time.fixedTime) {
        var tempBullet = Instantiate(bullet, transform.position, transform.rotation);
        Destroy(tempBullet, 2);
        
        timeCurrent = Time.fixedTime;
    }
}

II-B. Générer un nombre aléatoire

Pour générer un nombre aléatoire, vous devez utiliser la classe Random :

 
Sélectionnez
Debug.Log(Random.value);

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 : les quaternions

 

Sommaire

 

Tutoriel suivant : le lancer de rayon

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.