H_SafeExperienceDrivingSystem/U3D_DrivingSystem/Assets/Script/RoadEventManager.cs

97 lines
3.1 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using EVP;
using TMPro;
using UnityEngine;
namespace Script
{
public class RoadEventManager : MonoBehaviour
{
private List<Collider> triggeredTriggers = new List<Collider>();
public VehicleController vehicleController;
public GameObject ui;
private IEnumerator Start()
{
while (true)
{
// 在每一帧等待,等待下一帧检测事件
yield return null;
// 在这里处理当前触发器事件的逻辑
foreach (var trigger in triggeredTriggers)
{
switch (trigger.name)
{
case "超速60":
if (Convert.ToInt32((vehicleController.speed * 3.6f)) > 60)
{
if (!ui.activeInHierarchy)
{
ui.SetActive(true);
ui.transform.Find("Text").GetComponent<TMP_Text>().text = "超速60";
}
}
break;
case "超速40":
if (Convert.ToInt32((vehicleController.speed * 3.6f)) > 30)
{
if (!ui.activeInHierarchy)
{
ui.SetActive(true);
ui.transform.Find("Text").GetComponent<TMP_Text>().text = "超速40";
}
}
break;
}
Debug.Log(trigger.name);
// 处理触发器事件的逻辑
}
}
}
private void OnTriggerEnter(Collider other)
{
if (other.CompareTag("honglvdengchufa"))
{
if (other.name == "触发红灯")
{
if (!ui.activeInHierarchy)
{
ui.SetActive(true);
ui.transform.Find("Text").GetComponent<TMP_Text>().text = "红灯!";
}
}
else
{
// 检查是否已经在触发器列表中
if (!triggeredTriggers.Contains(other))
{
// 进入新的触发器时,保存它到列表
triggeredTriggers.Add(other);
// 在这里执行触发器进入事件的处理逻辑
}
}
}
}
private void OnTriggerExit(Collider other)
{
if (other.CompareTag("honglvdengchufa"))
{
// 离开触发器时,从列表中移除它
triggeredTriggers.Remove(other);
}
// 在这里执行触发器离开事件的处理逻辑
}
}
}