Как создать светофор в Unity
Этот урок проведет вас через процесс создания простой системы светофора в Unity с использованием C#. Вы узнаете, как настроить светофоры, добавить логику для их управления и смоделировать работающую систему светофора.
Предпосылки
- Базовые знания интерфейса Unity
- Базовые знания программирования на C#
- Unity установлен на вашем компьютере (любая последняя версия)
Шаг 1: Подготовка сцены
Сначала нам нужно настроить сцену в Unity с тремя сигналами светофора (красным, желтым и зеленым), чтобы имитировать систему светофора.
- Откройте Unity и создайте новый проект.
- В окне Hierarchy создайте три 3D-объекта, представляющих светофоры. Вы можете использовать Spheres для каждого света. Переименуйте их в RedLight, YellowLight и GreenLight.
- Поместите их друг на друга в виде Scene, чтобы имитировать вертикальный светофор. Отрегулируйте их положение и масштаб по мере необходимости.
- To make them look like real traffic lights, assign different colors to each sphere:
- Выберите RedLight и измените цвет его материала на красный.
- Выберите YellowLight и измените цвет его материала на желтый.
- Выберите GreenLight и измените цвет его материала на зеленый.
Шаг 2: Создание сценария светофора
Теперь мы напишем скрипт для управления поведением светофора. Этот скрипт будет циклически переключать красный, желтый и зеленый свет через равные промежутки времени.
- В папке Assets щелкните правой кнопкой мыши и выберите Create > C# Script. Назовите его TrafficLightController.
- Откройте скрипт в предпочитаемом вами редакторе кода и напишите следующий код:
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);
}
}
}
Этот сценарий определяет простой цикл, в котором красный, зеленый и желтый свет включаются и выключаются последовательно.
Шаг 3: Назначение света сценарию
Теперь, когда скрипт готов, нам нужно связать со скриптом объекты освещения, чтобы он знал, какими источниками света управлять.
- Выберите Главную камеру или создайте пустой GameObject в сцене для хранения скрипта. Назовите его TrafficLightController.
- В Инспекторе нажмите Добавить компонент и прикрепите скрипт TrafficLightController.
- Assign the traffic light spheres to the script:
- Перетащите объект RedLight в поле redLight в скрипте.
- Перетащите объект YellowLight в поле yellowLight.
- Перетащите объект GreenLight в поле greenLight.
Шаг 4: Тестирование системы светофора
Теперь пришло время протестировать систему светофора и посмотреть, все ли работает так, как ожидалось.
- Нажмите кнопку Воспроизвести в верхней части редактора Unity.
- Наблюдайте за работой светофорной системы. Красный, зеленый и желтый свет должны циклически меняться в зависимости от временных интервалов, которые вы определили в сценарии.
Если все работает, вы должны увидеть, как на 5 секунд загорится красный свет, затем на 5 секунд загорится зеленый свет, а затем на 2 секунды загорится желтый свет, и так по кругу.
Шаг 5: Настройка светофора
Вы можете легко настроить систему светофоров, изменив временные интервалы для каждого света. В окне Inspector измените поля redLightDuration, yellowLightDuration и greenLightDuration, чтобы изменить продолжительность свечения каждого света.
Например, вы можете сделать красный свет более продолжительным, чтобы имитировать оживленный перекресток, или настроить продолжительность желтого света для более быстрого переключения.
Заключение
Вы успешно создали простую систему светофора в Unity. Следуя этому руководству, вы узнали, как управлять GameObjects с помощью C# и реализовать синхронизированный цикл для имитации реальной системы. Отсюда вы можете расширить этот проект, добавив больше функций, таких как пешеходные светофоры, таймеры обратного отсчета или более сложные правила дорожного движения.