Cum se creează un semafor în Unity

Acest tutorial vă va ghida prin procesul de creare a unui sistem de semafor simplu în Unity folosind C#. Veți învăța cum să configurați semafoarele, să adăugați o logică pentru a le controla și să simulați un sistem de semafor care funcționează.

Cerințe preliminare

  • Cunoștințe de bază ale interfeței Unity
  • Înțelegerea de bază a programării C#
  • Unity instalat pe computer (orice versiune recentă)

Pasul 1: Configurarea scenei

Mai întâi, trebuie să setăm scena în Unity cu trei lumini (roșu, galben și verde) pentru a simula un sistem de semafor.

  1. Deschide Unity și creează un nou proiect.
  2. În fereastra Ierarhie, creați trei obiecte 3D reprezentând semafoare. Puteți folosi Spheres pentru fiecare lumină. Redenumiți-le în RedLight, YellowLight și GreenLight.
  3. Așezați-le unul peste altul în vizualizarea Scene pentru a simula un semafor vertical. Ajustați-le poziția și scala după cum este necesar.
  4. To make them look like real traffic lights, assign different colors to each sphere:
    • Selectați RedLight și schimbați culoarea materialului în roșu.
    • Selectați YellowLight și schimbați culoarea materialului în galben.
    • Selectați GreenLight și schimbați culoarea materialului în verde.

Pasul 2: Crearea scriptului de semafor

Acum, vom scrie un script pentru a controla comportamentul semaforului. Acest script va trece prin luminile roșii, galbene și verzi la intervale regulate.

  1. În folderul Assets, faceți clic dreapta și selectați Create > C# Script. Numele-i TrafficLightController.
  2. Deschideți scriptul în editorul de cod preferat și scrieți următorul cod:
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);
        }
    }
}

Acest script definește un ciclu simplu în care luminile roșii, verzi și galbene se aprind și se sting în secvență.

Pasul 3: Atribuirea luminilor scriptului

Acum că scenariul este gata, trebuie să conectăm obiectele luminoase la scenariu, astfel încât acesta să știe ce lumini să controleze.

  1. Selectați Camera principală sau creați un GameObject gol în scenă pentru a păstra scenariul. Numele-i TrafficLightController.
  2. În Inspector, faceți clic pe Add Component și atașați scriptul TrafficLightController.
  3. Assign the traffic light spheres to the script:
    • Trageți obiectul RedLight în câmpul redLight din script.
    • Trageți obiectul YellowLight în câmpul yellowLight.
    • Trageți obiectul GreenLight în câmpul greenLight.

Pasul 4: Testarea sistemului de semafor

Acum, este timpul să testăm sistemul de semafor și să vedem dacă totul funcționează conform așteptărilor.

  1. Apăsați butonul Play din partea de sus a editorului Unity.
  2. Observați sistemul de semafor în acțiune. Luminile roșii, verzi și galbene ar trebui să cicleze în funcție de intervalele de timp pe care le-ați definit în script.

Dacă totul funcționează, ar trebui să vedeți lumina roșie aprinzându-se timp de 5 secunde, urmată de lumina verde timp de 5 secunde și apoi lumina galbenă timp de 2 secunde, repetându-se într-o buclă.

Pasul 5: Personalizarea semaforului

Puteți personaliza cu ușurință sistemul de semafor schimbând intervalele de timp pentru fiecare semafor. În fereastra Inspector, modificați câmpurile redLightDuration, yellowLightDuration și greenLightDuration pentru a modifica cât timp rămâne aprinsă fiecare lumină.

De exemplu, puteți face ca lumina roșie să rămână aprinsă mai mult timp pentru a simula o intersecție aglomerată sau puteți ajusta durata luminii galbene pentru o tranziție mai rapidă.

Concluzie

Ați creat cu succes un sistem de semafor simplu în Unity. Urmând acest tutorial, ați învățat cum să controlați GameObjects cu C# și să implementați o buclă temporizată pentru a simula un sistem din lumea reală. De aici, puteți extinde acest proiect adăugând mai multe funcții, cum ar fi lumini pentru pietoni, cronometre cu numărătoare inversă sau reguli de trafic mai complexe.