Cómo crear un semáforo en Unity

Este tutorial lo guiará a través del proceso de creación de un sistema de semáforos simple en Unity con C#. Aprenderá a configurar los semáforos, agregar lógica para controlarlos y simular un sistema de semáforos en funcionamiento.

Prerrequisitos

  • Conocimientos básicos de la interfaz Unity
  • Comprensión básica de la programación en C#
  • Unity instalado en su computadora (cualquier versión reciente)

Paso 1: Preparación de la escena

Primero, necesitamos configurar la escena en Unity con tres luces (roja, amarilla y verde) para simular un sistema de semáforos.

  1. Abra Unity y cree un nuevo proyecto.
  2. En la ventana Jerarquía, crea tres objetos 3D que representen los semáforos. Puedes usar esferas para cada semáforo. Renómbralos como Luz roja, Luz amarilla y Luz verde.
  3. Colóquelos uno sobre el otro en la vista Escena para simular un semáforo vertical. Ajuste su posición y escala según sea necesario.
  4. To make them look like real traffic lights, assign different colors to each sphere:
    • Seleccione RedLight y cambie su color de material a rojo.
    • Seleccione YellowLight y cambie su color de material a amarillo.
    • Seleccione GreenLight y cambie su color de material a verde.

Paso 2: Creación del script del semáforo

Ahora, escribiremos un script para controlar el comportamiento del semáforo. Este script hará que las luces roja, amarilla y verde se enciendan y apaguen a intervalos regulares.

  1. En la carpeta Assets, haz clic con el botón derecho y selecciona Create > C# Script. Asígnale el nombre TrafficLightController.
  2. Abra el script en su editor de código preferido y escriba el siguiente código:
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);
        }
    }
}

Este script define un ciclo simple donde las luces roja, verde y amarilla se encienden y apagan en secuencia.

Paso 3: Asignar las luces al script

Ahora que el script está listo, necesitamos vincular los objetos de luz al script para que sepa qué luces controlar.

  1. Seleccione la Cámara principal o cree un GameObject vacío en la escena para guardar el script. Nómbrelo TrafficLightController.
  2. En el Inspector, haga clic en Agregar componente y adjunte el script TrafficLightController.
  3. Assign the traffic light spheres to the script:
    • Arrastre el objeto RedLight al campo redLight en el script.
    • Arrastre el objeto YellowLight al campo yellowLight.
    • Arrastre el objeto GreenLight al campo greenLight.

Paso 4: Prueba del sistema de semáforos

Ahora es el momento de probar el sistema de semáforos y ver si todo funciona como se espera.

  1. Presione el botón Reproducir en la parte superior del editor Unity.
  2. Observa el sistema de semáforos en acción. Las luces roja, verde y amarilla deben alternar según los intervalos de tiempo que hayas definido en el script.

Si todo está funcionando, deberías ver la luz roja encendida durante 5 segundos, seguida de la luz verde durante 5 segundos y luego la luz amarilla durante 2 segundos, repitiéndose en un bucle.

Paso 5: Personalización del semáforo

Puede personalizar fácilmente el sistema de semáforos modificando los intervalos de tiempo de cada luz. En la ventana Inspector, modifique los campos redLightDuration, yellowLightDuration y greenLightDuration para cambiar el tiempo que permanece encendida cada luz.

Por ejemplo, puede hacer que la luz roja permanezca encendida durante más tiempo para simular una intersección concurrida o ajustar la duración de la luz amarilla para una transición más rápida.

Conclusión

Has creado con éxito un sistema de semáforos sencillo en Unity. Al seguir este tutorial, has aprendido a controlar GameObjects con C# e implementar un bucle cronometrado para simular un sistema del mundo real. A partir de aquí, puedes ampliar este proyecto añadiendo más funciones, como luces para peatones, temporizadores de cuenta regresiva o reglas de tráfico más complejas.