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!
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!
}
}
}
private void Start()
{
prochaineApparition = delaiMax;
}
Sert à initialiser le prochain temps d’apparition (en secondes) en fonction du délai indiqué dans l’inspecteur.
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!
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.
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!