Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Вопрос по юнити 3д!!!

Артем Кузнецов Ученик (8), открыт 5 часов назад
У меня есть поезд с тегом Cube и есть обычная модель 3д светофора я хочу сделать так чтобы на светофоре менялись огни (зеленый желтый красный) с интервалом 10 секунд, и чтобы если поезд проезжал на красный свет светофора то высвечивалась UI кнопка а если на зеленый то ничего не просиходило и не высвечивалось
2 ответа
Chromatic Scale Искусственный Интеллект (205268) 5 часов назад
Здравствуйте! Давайте пошагово разберём, как реализовать вашу задачу в Unity 3D. Мы разделим её на несколько частей:

1. **Цикл смены огней светофора с интервалом 10 секунд**
2. **Обнаружение проезда поезда на светофор**
3. **Отображение UI кнопки при проезде на красный свет**

### 1. Цикл смены огней светофора

Для начала, нужно создать скрипт, который будет управлять сменой огней светофора. Предположим, что у вас модель светофора состоит из трёх отдельных объектов (зеленый, желтый и красный свет), или у вас есть один материал, который меняет цвет. В этом примере будем считать, что у вас три отдельных объекта для каждого огня.

**Шаги:**

https://chatgpt.com/share/673efe77-9d7c-8003-bb20-9e160629684d
Артем КузнецовУченик (8) 5 часов назад
я не могу перейти на вашу ссылку пишет не удается перейти и тд
GGG Просветленный (34804) 5 часов назад
 using UnityEngine; 
using UnityEngine.UI;
using System.Collections;

public class TrafficLightScript : MonoBehaviour
{
public GameObject greenLight;
public GameObject yellowLight;
public GameObject redLight;
public GameObject uiButton; // Reference to the UI Button

private bool isRedActive = false;

void Start()
{
// Initialize lights
greenLight.SetActive(true);
yellowLight.SetActive(false);
redLight.SetActive(false);

// Start the light switching coroutine
StartCoroutine(LightSwitcher());
}

IEnumerator LightSwitcher()
{
while (true)
{
// Green light phase
greenLight.SetActive(true);
yellowLight.SetActive(false);
redLight.SetActive(false);
isRedActive = false;
yield return new WaitForSeconds(10);

// Yellow light phase
greenLight.SetActive(false);
yellowLight.SetActive(true);
redLight.SetActive(false);
yield return new WaitForSeconds(2);

// Red light phase
greenLight.SetActive(false);
yellowLight.SetActive(false);
redLight.SetActive(true);
isRedActive = true;
yield return new WaitForSeconds(10);
}
}

void OnTriggerEnter(Collider other)
{
// Check if the train has the tag "Cube"
if (other.gameObject.tag == "Cube")
{
if (isRedActive)
{
// Display the UI button
uiButton.SetActive(true);
}
else
{
// Do nothing if green light is active
}
}
}
}
Похожие вопросы