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.
- Abra Unity y cree un nuevo proyecto.
- 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.
- 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.
- 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.
- En la carpeta Assets, haz clic con el botón derecho y selecciona Create > C# Script. Asígnale el nombre TrafficLightController.
- 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.
- Seleccione la Cámara principal o cree un GameObject vacío en la escena para guardar el script. Nómbrelo TrafficLightController.
- En el Inspector, haga clic en Agregar componente y adjunte el script TrafficLightController.
- 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.
- Presione el botón Reproducir en la parte superior del editor Unity.
- 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.