Hvordan lage et trafikklys i Unity

Denne opplæringen vil guide deg gjennom prosessen med å lage et enkelt trafikklyssystem i Unity ved hjelp av C#. Du lærer hvordan du setter opp trafikklysene, legger til logikk for å kontrollere dem og simulerer et fungerende trafikklyssystem.

Forutsetninger

  • Grunnleggende kunnskap om Unity-grensesnittet
  • Grunnleggende forståelse av C# programmering
  • Unity installert på datamaskinen din (en hvilken som helst nyere versjon)

Trinn 1: Sette opp scenen

Først må vi sette opp scenen i Unity med tre lys (rødt, gult og grønt) for å simulere et trafikklyssystem.

  1. Åpne Unity og lag et nytt prosjekt.
  2. I Hierarchy-vinduet oppretter du tre 3D-objekter som representerer trafikklysene. Du kan bruke Spheres for hvert lys. Gi dem nytt navn til RedLight, YellowLight og GreenLight.
  3. Plasser dem oppå hverandre i Scene-visningen for å simulere et vertikalt trafikklys. Juster deres posisjon og skala etter behov.
  4. To make them look like real traffic lights, assign different colors to each sphere:
    • Velg RedLight og endre materialfargen til rød.
    • Velg YellowLight og endre materialfargen til gul.
    • Velg GreenLight og endre materialfargen til grønn.

Trinn 2: Opprette trafikklysskriptet

Nå skal vi skrive et skript for å kontrollere trafikklysoppførselen. Dette skriptet vil gå gjennom de røde, gule og grønne lysene med jevne mellomrom.

  1. I mappen Assets høyreklikker du og velger Create > C# Script. Gi den et navn TrafficLightController.
  2. Åpne skriptet i ditt foretrukne koderedigeringsprogram 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 skriptet definerer en enkel syklus der de røde, grønne og gule lysene slås av og på i rekkefølge.

Trinn 3: Tilordne lysene til skriptet

Nå som skriptet er klart, må vi koble lysobjektene til skriptet slik at det vet hvilke lys som skal kontrolleres.

  1. Velg Hovedkamera eller lag et tomt GameObject i scenen for å holde skriptet. Gi den et navn TrafficLightController.
  2. I Inspector klikker du på Add Component og legger ved TrafficLightController-skriptet.
  3. Assign the traffic light spheres to the script:
    • Dra RedLight-objektet inn i redLight-feltet i skriptet.
    • Dra YellowLight-objektet inn i yellowLight-feltet.
    • Dra GreenLight-objektet inn i greenLight-feltet.

Trinn 4: Testing av trafikklyssystemet

Nå er det på tide å teste trafikklyssystemet og se om alt fungerer som forventet.

  1. Trykk på Play-knappen øverst i Unity-editoren.
  2. Observer trafikklyssystemet i aksjon. De røde, grønne og gule lysene skal veksle basert på tidsintervallene du definerte i skriptet.

Hvis alt fungerer, bør du se det røde lyset slå på i 5 sekunder, etterfulgt av det grønne lyset i 5 sekunder, og deretter det gule lyset i 2 sekunder, gjentatt i en sløyfe.

Trinn 5: Tilpasse trafikklyset

Du kan enkelt tilpasse trafikklyssystemet ved å endre tidsintervallene for hvert lys. I Inspector-vinduet endrer du feltene redLightDuration, yellowLightDuration og greenLightDuration for å endre hvor lenge hvert lys forblir på.

Du kan for eksempel få det røde lyset til å lyse lenger for å simulere et trafikkert veikryss eller justere varigheten av det gule lyset for en raskere overgang.

Konklusjon

Du har opprettet et enkelt trafikklyssystem i Unity. Ved å følge denne opplæringen har du lært hvordan du kontrollerer GameObjects med C# og implementerer en tidsbestemt loop for å simulere et virkelig system. Herfra kan du utvide dette prosjektet ved å legge til flere funksjoner som fotgjengerlys, nedtellingstidtakere eller mer komplekse trafikkregler.