Ressources Magic Makers

 

Site en maintenance

 
Nous sommes actuellement entrain de mettre à jour les ressources de ce site.
Pendant la mise à jour vous pouvez retrouver tous les nouveaux contenus sur le site
 

https://lp-magicmakers.fr/

 
 

Chronomètre et gestion du temps

Gérer le délai

Tu aimerais pouvoir déclencher du code après un certain délai? Ce guide est fait pour toi! Tu apprendras comment créer un délai, répéter le chronomètre et inclure de l’aléatoire!

Délai simple

Voici un script d’exemple avec tous les éléments qui te permettront de créer un délai! 

public class NomDeTonScript : MonoBehaviour
{
    public float delaiMax;
    private float prochaineApparition;

    private void Start()
    {
        prochaineApparition = delaiMax;
    }

    private void Update()
    {
        if(Time.time > prochaineApparition)
        {
            // mets ton code ici! 
        }
    }
}

Explication des variables

  • public float delaiMax – sert à définir le temps d’attente en secondes. Comme c’est une variable publique, tu peux le modifier depuis l’inspecteur. N’oublie pas de le changer dans l’inspecteur pour qu’il ne soit pas égal à zéro! (sinon il est inutile)

  • private float prochaineApparition – variable qui va stocker le moment (en secondes) qu’il faudra dépasser pour déclencher le code!

 

Explication du Start

 private void Start()
    {
        prochaineApparition = delaiMax;
    }

Sert à initialiser le prochain temps d’apparition (en secondes) en fonction du délai indiqué dans l’inspecteur. 

Explication de l’Update

 private void Update()
    {
        if(Time.time > prochaineApparition)
        {
            // mets ton code ici! 
        }
    }

Time.time est la variable qui indique le temps passé depuis le début du jeu (en seconde). On vérifie si ce temps dépasse celui qu’on a fixé pour la prochaineApparition. Si c’est le cas, ça déclenche le code à l’intérieur de la condition!

Redémarrer le chronomètre

Tel quel, le script attend juste un délai pour faire ce qu’on lui demande. Cela serait bien de pouvoir redémarrer le chrono pour qu’il puisse exécuter ton code à intervalles réguliers! Imaginons par exemple que tu veuilles faire apparaître des obstacles toutes les deux secondes!


Ajoute à ton script une fonction qui permet de redémarrer le chrono. Tout ce que fait cette fonction est de répéter ce qu’on a déjà écrit dans la fonction Start.

private void RedemarrerLeChrono()
    {
        prochaineApparition = Time.time + delaiMax;
    }

D’ailleurs c’est pour cette raison que tu peux remplacer ce que tu as mis dans Start par un simple appel de la fonction RedemarrerLeChrono();

 private void Start()
    {
        RedemarrerLeChrono();
    }

Dans la fonction Update, tu vas appeler RedemarrerLeChrono() à chaque fois que la condition est remplie.

private void Update()
    {
        if(Time.time > prochaineApparition)
        {
             RedemarrerLeChrono();
            // mets ton code ici! 
        }
    }

Cela aura pour effet de faire redémarrer le chronomètre à chaque fois que le délai est atteint. Le code que tu vas écrire à l’intérieur de la condition ne sera exécuté qu’à intervalles réguliers. 

Redémarrer le chronomètre dans un délai aléatoire

C’est très sympa d’avoir du code qui s’exécute régulièrement comme une horloge, mais c’est souvent plus faire d’ajouter de l’aléatoire dedans! Ne pas prévoir quand apparaîtra le prochain obstacle est bien plus amusant pour le joueur! Pour cela, rien de plus simple: il faut juste modifier la fonction RedemarrerLeChrono() en y intégrant un délai aléatoire.

private void RedemarrerLeChrono()
    {
        prochaineApparition = Time.time + Random.Range(0, delaiMax);
    }

Pour un rappel sur l’aléatoire, c’est ici!