Comment créer un feu de circulation dans Unity

Ce didacticiel vous guidera tout au long du processus de création d'un système de feux de circulation simple dans Unity à l'aide de C#. Vous apprendrez à configurer les feux de circulation, à ajouter une logique pour les contrôler et à simuler un système de feux de circulation fonctionnel.

Prérequis

  • Connaissances de base de l'interface Unity
  • Compréhension de base de la programmation C#
  • Unity installé sur votre ordinateur (toute version récente)

Étape 1: Configuration de la scène

Tout d’abord, nous devons configurer la scène dans Unity avec trois feux (rouge, jaune et vert) pour simuler un système de feux de circulation.

  1. Ouvrez Unity et créez un nouveau projet.
  2. Dans la fenêtre Hiérarchie, créez trois objets 3D représentant les feux de circulation. Vous pouvez utiliser des Sphères pour chaque feu. Renommez-les en FeuRouge, FeuJaune et FeuVert.
  3. Placez-les les uns sur les autres dans la vue Scene pour simuler un feu de circulation vertical. Ajustez leur position et leur échelle selon vos besoins.
  4. To make them look like real traffic lights, assign different colors to each sphere:
    • Sélectionnez RedLight et changez sa couleur de matériau en rouge.
    • Sélectionnez YellowLight et changez sa couleur de matériau en jaune.
    • Sélectionnez GreenLight et changez sa couleur de matériau en vert.

Étape 2: création du script de feux de circulation

Nous allons maintenant écrire un script pour contrôler le comportement des feux de circulation. Ce script fera défiler les feux rouges, jaunes et verts à intervalles réguliers.

  1. Dans le dossier Assets, faites un clic droit et sélectionnez Créer > Script C#. Nommez-le TrafficLightController.
  2. Ouvrez le script dans votre éditeur de code préféré et écrivez le code suivant:
using System.Collections;
using UnityEngine;

public class TrafficLightController : MonoBehaviour
{
    public GameObject redLight;
    public GameObject yellowLight;
    public GameObject greenLight;
    
    public float redLightDuration = 5f;
    public float yellowLightDuration = 2f;
    public float greenLightDuration = 5f;
    
    private void Start()
    {
        StartCoroutine(TrafficLightCycle());
    }
    
    IEnumerator TrafficLightCycle()
    {
        while (true)
        {
            // Red light on
            redLight.SetActive(true);
            yellowLight.SetActive(false);
            greenLight.SetActive(false);
            yield return new WaitForSeconds(redLightDuration);
            
            // Green light on
            redLight.SetActive(false);
            yellowLight.SetActive(false);
            greenLight.SetActive(true);
            yield return new WaitForSeconds(greenLightDuration);
            
            // Yellow light on
            redLight.SetActive(false);
            yellowLight.SetActive(true);
            greenLight.SetActive(false);
            yield return new WaitForSeconds(yellowLightDuration);
        }
    }
}

Ce script définit un cycle simple où les lumières rouge, verte et jaune s'allument et s'éteignent en séquence.

Étape 3: Affecter les lumières au script

Maintenant que le script est prêt, nous devons lier les objets lumineux au script afin qu'il sache quelles lumières contrôler.

  1. Sélectionnez la Caméra principale ou créez un GameObject vide dans la scène pour contenir le script. Nommez-le TrafficLightController.
  2. Dans Inspector, cliquez sur Ajouter un composant et attachez le script TrafficLightController.
  3. Assign the traffic light spheres to the script:
    • Faites glisser l'objet RedLight dans le champ redLight du script.
    • Faites glisser l'objet YellowLight dans le champ yellowLight.
    • Faites glisser l'objet GreenLight dans le champ greenLight.

Étape 4: Test du système de feux de circulation

Il est maintenant temps de tester le système de feux de circulation et de voir si tout fonctionne comme prévu.

  1. Appuyez sur le bouton Play en haut de l'éditeur Unity.
  2. Observez le système de feux de circulation en action. Les feux rouges, verts et jaunes doivent s'allumer en fonction des intervalles de temps que vous avez définis dans le script.

Si tout fonctionne, vous devriez voir le voyant rouge s'allumer pendant 5 secondes, suivi du voyant vert pendant 5 secondes, puis du voyant jaune pendant 2 secondes, en boucle.

Étape 5: Personnalisation du feu de circulation

Vous pouvez facilement personnaliser le système de feux de circulation en modifiant les intervalles de temps de chaque feu. Dans la fenêtre Inspector, modifiez les champs redLightDuration, yellowLightDuration et greenLightDuration pour modifier la durée d'allumage de chaque feu.

Par exemple, vous pouvez faire en sorte que le feu rouge reste allumé plus longtemps pour simuler une intersection très fréquentée ou ajuster la durée du feu jaune pour une transition plus rapide.

Conclusion

Vous avez réussi à créer un système de feux de circulation simple dans Unity. En suivant ce tutoriel, vous avez appris à contrôler les GameObjects avec C# et à implémenter une boucle temporisée pour simuler un système réel. À partir de là, vous pouvez développer ce projet en ajoutant d'autres fonctionnalités telles que des feux pour piétons, des comptes à rebours ou des règles de circulation plus complexes.