Sådan opretter du et trafiklys i Unity

Denne vejledning vil guide dig gennem processen med at skabe et simpelt trafiklyssystem i Unity ved hjælp af C#. Du lærer, hvordan du opsætter trafiklysene, tilføjer logik til at styre dem og simulerer et fungerende trafiklyssystem.

Forudsætninger

  • Grundlæggende viden om Unity-grænsefladen
  • Grundlæggende forståelse for C# programmering
  • Unity installeret på din computer (en hvilken som helst nyere version)

Trin 1: Opsætning af scenen

Først skal vi opsætte scenen i Unity med tre lys (rødt, gult og grønt) for at simulere et trafiklyssystem.

  1. Åbn Unity og opret et nyt projekt.
  2. I vinduet Hierarchy skal du oprette tre 3D-objekter, der repræsenterer trafiklysene. Du kan bruge Spheres for hvert lys. Omdøb dem til RedLight, YellowLight og GreenLight.
  3. Placer dem oven på hinanden i Scene-visningen for at simulere et lodret trafiklys. Juster deres position og skala efter behov.
  4. To make them look like real traffic lights, assign different colors to each sphere:
    • Vælg RedLight og skift dens materialefarve til rød.
    • Vælg YellowLight og skift dens materialefarve til gul.
    • Vælg GreenLight og skift dens materialefarve til grøn.

Trin 2: Oprettelse af Traffic Light Script

Nu vil vi skrive et script til at kontrollere trafiklysadfærden. Dette script vil cykle gennem de røde, gule og grønne lys med jævne mellemrum.

  1. I mappen Assets skal du højreklikke og vælge Create > C# Script. Navngiv den TrafficLightController.
  2. Åbn scriptet i din foretrukne kodeeditor og skriv følgende kode:
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);
        }
    }
}

Dette script definerer en simpel cyklus, hvor de røde, grønne og gule lys tænder og slukker i rækkefølge.

Trin 3: Tildeling af lysene til scriptet

Nu hvor scriptet er klar, skal vi linke lysobjekterne til scriptet, så det ved hvilke lys der skal styres.

  1. Vælg Main Camera eller opret et tomt GameObject i scenen for at holde scriptet. Navngiv den TrafficLightController.
  2. I Inspector skal du klikke på Add Component og vedhæfte TrafficLightController scriptet.
  3. Assign the traffic light spheres to the script:
    • Træk RedLight-objektet ind i redLight-feltet i scriptet.
    • Træk YellowLight-objektet ind i yellowLight-feltet.
    • Træk GreenLight-objektet ind i greenLight-feltet.

Trin 4: Test af trafiklyssystemet

Nu er det tid til at teste lyskrydssystemet og se, om alt fungerer som forventet.

  1. Tryk på knappen Play øverst i Unity-editoren.
  2. Observer lyskrydssystemet i aktion. De røde, grønne og gule lys skal cykle baseret på de tidsintervaller, du definerede i scriptet.

Hvis alt fungerer, bør du se det røde lys tænde i 5 sekunder, efterfulgt af det grønne lys i 5 sekunder, og derefter det gule lys i 2 sekunder, gentaget i en sløjfe.

Trin 5: Tilpasning af trafiklyset

Du kan nemt tilpasse trafiklyssystemet ved at ændre tidsintervallerne for hvert lys. I vinduet Inspector skal du ændre felterne redLightDuration, yellowLightDuration og greenLightDuration for at ændre, hvor længe hvert lys forbliver tændt.

For eksempel kan du få det røde lys til at forblive tændt længere for at simulere et trafikeret vejkryds eller justere det gule lyss varighed for en hurtigere overgang.

Konklusion

Du har med succes oprettet et simpelt trafiklyssystem i Unity. Ved at følge denne vejledning har du lært, hvordan du styrer GameObjects med C# og implementerer en tidsindstillet sløjfe for at simulere et virkeligt system. Herfra kan du udvide dette projekt ved at tilføje flere funktioner som fodgængerlys, nedtællingstimere eller mere komplekse trafikregler.