Hoe maak je een verkeerslicht in Unity
Deze tutorial begeleidt u door het proces van het maken van een eenvoudig verkeerslichtsysteem in Unity met behulp van C#. U leert hoe u de verkeerslichten instelt, logica toevoegt om ze te besturen en een werkend verkeerslichtsysteem simuleert.
Vereisten
- Basiskennis van de Unity-interface
- Basiskennis van C#-programmering
- Unity geïnstalleerd op uw computer (een recente versie)
Stap 1: De scène opzetten
Eerst moeten we de scène in Unity instellen met drie lichten (rood, geel en groen) om een verkeerslichtsysteem te simuleren.
- Open Unity en maak een nieuw project.
- Maak in het venster Hierarchy drie 3D-objecten die de verkeerslichten voorstellen. U kunt Spheres voor elk licht gebruiken. Hernoem ze naar RedLight, YellowLight en GreenLight.
- Plaats ze boven elkaar in de Scene-weergave om een verticaal verkeerslicht te simuleren. Pas hun positie en schaal aan indien nodig.
- To make them look like real traffic lights, assign different colors to each sphere:
- Selecteer RedLight en verander de materiaalkleur naar rood.
- Selecteer YellowLight en verander de materiaalkleur naar geel.
- Selecteer GreenLight en verander de materiaalkleur naar groen.
Stap 2: Het verkeerslichtscript maken
Nu gaan we een script schrijven om het gedrag van het verkeerslicht te regelen. Dit script zal met regelmatige tussenpozen door de rode, gele en groene lichten heen gaan.
- Klik met de rechtermuisknop in de map Assets en selecteer Create > C# Script. Noem het TrafficLightController.
- Open het script in uw favoriete code-editor en schrijf de volgende code:
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);
}
}
}
Dit script definieert een eenvoudige cyclus waarbij de rode, groene en gele lichten achtereenvolgens aan en uit gaan.
Stap 3: De lichten aan het script toewijzen
Nu het script klaar is, moeten we de lichtobjecten aan het script koppelen, zodat het script weet welke lampen aangestuurd moeten worden.
- Selecteer de Hoofdcamera of maak een leeg GameObject in de scène om het script te bewaren. Noem het TrafficLightController.
- Klik in de Inspector op Component toevoegen en voeg het script TrafficLightController toe.
- Assign the traffic light spheres to the script:
- Sleep het RedLight-object naar het redLight-veld in het script.
- Sleep het YellowLight-object naar het yellowLight-veld.
- Sleep het GreenLight-object naar het greenLight-veld.
Stap 4: Het verkeerslichtsysteem testen
Nu is het tijd om het verkeerslichtsysteem te testen en te kijken of alles werkt zoals verwacht.
- Klik op de Play-knop bovenaan de Unity-editor.
- Bekijk het verkeerslichtsysteem in actie. De rode, groene en gele lichten moeten cyclisch zijn op basis van de tijdsintervallen die u in het script hebt gedefinieerd.
Als alles werkt, zou u het rode lampje 5 seconden moeten zien branden, gevolgd door het groene lampje 5 seconden en vervolgens het gele lampje 2 seconden. Dit herhaalt zich in een lus.
Stap 5: Het verkeerslicht aanpassen
U kunt het verkeerslichtsysteem eenvoudig aanpassen door de tijdsintervallen voor elk licht te wijzigen. Wijzig in het venster Inspector de velden redLightDuration, yellowLightDuration en greenLightDuration om te wijzigen hoe lang elk licht aan blijft.
U kunt bijvoorbeeld het rode licht langer laten branden om een druk kruispunt te simuleren of de duur van het gele licht aanpassen voor een snellere overgang.
Conclusie
Je hebt met succes een eenvoudig verkeerslichtsysteem gemaakt in Unity. Door deze tutorial te volgen, heb je geleerd hoe je GameObjects met C# kunt besturen en een timed loop kunt implementeren om een real-world systeem te simuleren. Vanaf hier kun je dit project uitbreiden door meer functies toe te voegen, zoals voetgangerslichten, afteltimers of complexere verkeersregels.