Hur man skapar ett trafikljus i Unity
Denna handledning guidar dig genom processen att skapa ett enkelt trafikljussystem i Unity med C#. Du lär dig hur du ställer in trafikljusen, lägger till logik för att styra dem och simulerar ett fungerande trafikljussystem.
Förutsättningar
- Grundläggande kunskap om Unity-gränssnittet
- Grundläggande förståelse för C#-programmering
- Unity installerad på din dator (alla nyare versioner)
Steg 1: Konfigurera scenen
Först måste vi ställa in scenen i Unity med tre lampor (röd, gul och grön) för att simulera ett trafikljussystem.
- Öppna Unity och skapa ett nytt projekt.
- I fönstret Hierarchy skapar du tre 3D-objekt som representerar trafikljusen. Du kan använda Spheres för varje ljus. Byt namn på dem till RedLight, YellowLight och GreenLight.
- Placera dem ovanpå varandra i vyn Scene för att simulera ett vertikalt trafikljus. Justera deras position och skala efter behov.
- To make them look like real traffic lights, assign different colors to each sphere:
- Välj RedLight och ändra dess materialfärg till röd.
- Välj YellowLight och ändra dess materialfärg till gul.
- Välj GreenLight och ändra dess materialfärg till grön.
Steg 2: Skapa trafikljusskriptet
Nu kommer vi att skriva ett skript för att kontrollera trafikljusens beteende. Det här skriptet kommer att gå igenom de röda, gula och gröna lamporna med jämna mellanrum.
- I mappen Assets högerklickar du och väljer Create > C# Script. Döp den till TrafficLightController.
- Öppna skriptet i din föredragna kodredigerare och skriv följande kod:
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);
}
}
}
Det här skriptet definierar en enkel cykel där de röda, gröna och gula lamporna tänds och släcks i följd.
Steg 3: Tilldela ljusen till skriptet
Nu när skriptet är klart måste vi länka ljusobjekten till skriptet så att det vet vilka lampor som ska styras.
- Välj Huvudkamera eller skapa ett tomt GameObject i scenen för att hålla skriptet. Döp den till TrafficLightController.
- I Inspector klickar du på Add Component och bifogar TrafficLightController-skriptet.
- Assign the traffic light spheres to the script:
- Dra RedLight-objektet till redLight-fältet i skriptet.
- Dra YellowLight-objektet till yellowLight-fältet.
- Dra GreenLight-objektet till greenLight-fältet.
Steg 4: Testa trafikljussystemet
Nu är det dags att testa trafikljussystemet och se om allt fungerar som förväntat.
- Tryck på knappen Play längst upp i Unity-redigeraren.
- Observera trafikljussystemet i funktion. De röda, gröna och gula lamporna ska växla baserat på de tidsintervall som du definierade i skriptet.
Om allt fungerar bör du se det röda ljuset tänds i 5 sekunder, följt av det gröna ljuset i 5 sekunder, och sedan det gula ljuset i 2 sekunder, upprepande i en slinga.
Steg 5: Anpassa trafikljuset
Du kan enkelt anpassa trafikljussystemet genom att ändra tidsintervallen för varje ljus. I fönstret Inspector ändrar du fälten redLightDuration, yellowLightDuration och greenLightDuration för att ändra hur länge varje lampa lyser.
Du kan till exempel få det röda ljuset att lysa längre för att simulera en trafikerad korsning eller justera det gula ljusets varaktighet för en snabbare övergång.
Slutsats
Du har framgångsrikt skapat ett enkelt trafikljussystem i Unity. Genom att följa den här handledningen har du lärt dig hur du styr GameObjects med C# och implementerar en tidsinställd loop för att simulera ett verkligt system. Härifrån kan du utöka det här projektet genom att lägga till fler funktioner som fotgängarljus, nedräkningstimer eller mer komplexa trafikregler.