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.
- Åpne Unity og lag et nytt prosjekt.
- 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.
- Plasser dem oppå hverandre i Scene-visningen for å simulere et vertikalt trafikklys. Juster deres posisjon og skala etter behov.
- 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.
- I mappen Assets høyreklikker du og velger Create > C# Script. Gi den et navn TrafficLightController.
- Å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.
- Velg Hovedkamera eller lag et tomt GameObject i scenen for å holde skriptet. Gi den et navn TrafficLightController.
- I Inspector klikker du på Add Component og legger ved TrafficLightController-skriptet.
- 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.
- Trykk på Play-knappen øverst i Unity-editoren.
- 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.