NewN_UAVPlane/Assets/art/bangonglou/dalou/Traffic_Light/Scripts/TrafficLights2.cs

117 lines
2.6 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
namespace FCG
{
public class TrafficLights2 : MonoBehaviour
{
private float countTime = 0;
private int step = 0;
private int status;
public TrafficLight trafficLight_N;
public TrafficLight trafficLight_S;
public TrafficLight trafficLight_E;
public TrafficLight trafficLight_W;
// Use this for initialization
void Start()
{
countTime = 0;
step = 0;
status = (Random.Range(1, 8) < 4) ? 13 : 31;
EnabledObjects(status);
InvokeRepeating(nameof(TrafficLightTurn), Random.Range(0, 4), 1);
}
private void TrafficLightTurn()
{
countTime += 1;
if (step == 0)
{
if (countTime > 16) // How many seconds will the signal turn red or green
{
countTime = 0;
step = 1;
if (status == 13)
status = 12;
else if (status == 31)
status = 21;
EnabledObjects(status);
}
}
else if (step == 1)
{
if (countTime >= 5) //How many seconds will the signal turn yellow
{
countTime = 0;
step = 2;
if (status == 12)
status = 41;
else if (status == 21)
status = 14;
EnabledObjects(44);
}
}
else if (step == 2)
{
if (countTime >= 7) // How many seconds will it be open for pedestrians to cross the street?
{
countTime = 0;
step = 0;
if (status == 14)
status = 13;
else if (status == 41)
status = 31;
EnabledObjects(status);
}
}
}
void EnabledObjects(int st)
{
if (trafficLight_N)
trafficLight_N.SetStatus(st.ToString().Substring(0, 1));
if (trafficLight_S)
trafficLight_S.SetStatus(st.ToString().Substring(0, 1));
if (trafficLight_E)
trafficLight_E.SetStatus(st.ToString().Substring(1, 1));
if (trafficLight_W)
trafficLight_W.SetStatus(st.ToString().Substring(1, 1));
}
}
}