Come creare un semaforo in Unity
Questo tutorial ti guiderà attraverso il processo di creazione di un semplice sistema semaforico in Unity usando C#. Imparerai come impostare i semafori, aggiungere la logica per controllarli e simulare un sistema semaforico funzionante.
Prerequisiti
- Conoscenza di base dell'interfaccia Unity
- Conoscenza di base della programmazione C#
- Unity installato sul tuo computer (qualsiasi versione recente)
Fase 1: Impostazione della scena
Per prima cosa, dobbiamo impostare la scena in Unity con tre luci (rossa, gialla e verde) per simulare un sistema semaforico.
- Apri Unity e crea un nuovo progetto.
- Nella finestra Hierarchy, crea tre 3D objects che rappresentano i semafori. Puoi usare Spheres per ogni semaforo. Rinominali in RedLight, YellowLight e GreenLight.
- Posizionateli uno sopra l'altro nella vista Scena per simulare un semaforo verticale. Regolate la loro posizione e scala come necessario.
- To make them look like real traffic lights, assign different colors to each sphere:
- Seleziona RedLight e cambia il colore del suo materiale in rosso.
- Seleziona YellowLight e cambia il colore del suo materiale in giallo.
- Seleziona GreenLight e cambia il colore del suo materiale in verde.
Fase 2: creazione dello script del semaforo
Ora, scriveremo uno script per controllare il comportamento del semaforo. Questo script passerà ciclicamente dai semafori rosso, giallo e verde a intervalli regolari.
- Nella cartella Assets, fai clic con il pulsante destro del mouse e seleziona Crea > C# Script. Assegnagli il nome TrafficLightController.
- Apri lo script nel tuo editor di codice preferito e scrivi il seguente codice:
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);
}
}
}
Questo script definisce un ciclo semplice in cui le luci rossa, verde e gialla si accendono e si spengono in sequenza.
Fase 3: Assegnazione delle luci allo script
Ora che lo script è pronto, dobbiamo collegare gli oggetti luce allo script in modo che sappia quali luci controllare.
- Seleziona Main Camera o crea un GameObject vuoto nella scena per contenere lo script. Chiamalo TrafficLightController.
- Nell'Inspector, fare clic su Aggiungi componente e allegare lo script TrafficLightController.
- Assign the traffic light spheres to the script:
- Trascinare l'oggetto RedLight nel campo redLight nello script.
- Trascinare l'oggetto YellowLight nel campo yellowLight.
- Trascinare l'oggetto GreenLight nel campo greenLight.
Fase 4: Test del sistema semaforico
Adesso è il momento di testare il sistema semaforico e verificare se tutto funziona come previsto.
- Premere il pulsante Riproduci nella parte superiore dell'editor Unity.
- Osserva il sistema semaforico in azione. Le luci rossa, verde e gialla dovrebbero alternarsi in base agli intervalli di tempo definiti nello script.
Se tutto funziona, dovresti vedere la luce rossa accendersi per 5 secondi, seguita dalla luce verde per 5 secondi e poi dalla luce gialla per 2 secondi, ripetendo il tutto in loop.
Fase 5: Personalizzazione del semaforo
Puoi personalizzare facilmente il sistema semaforico modificando gli intervalli di tempo per ogni semaforo. Nella finestra Inspector, modifica i campi redLightDuration, yellowLightDuration e greenLightDuration per modificare la durata di accensione di ogni semaforo.
Ad esempio, è possibile far sì che il semaforo rosso resti acceso più a lungo per simulare un incrocio trafficato oppure regolare la durata del semaforo giallo per una transizione più rapida.
Conclusione
Hai creato con successo un semplice sistema di semafori in Unity. Seguendo questo tutorial, hai imparato a controllare GameObjects con C# e a implementare un ciclo temporizzato per simulare un sistema reale. Da qui, puoi espandere questo progetto aggiungendo altre funzionalità come semafori pedonali, timer per il conto alla rovescia o regole del traffico più complesse.