private IEnumerator FlashingCoroutine(TrafficLightLamp lamp, float sec) { while (true) { lamp.SetON(); StartCoroutine(FadeOutCoroutine(lamp, sec)); yield return(new WaitForSeconds(sec + 0.4f)); } }
private IEnumerator FadeOutCoroutine(TrafficLightLamp lamp, float duration) { const float Step = 0.05f; float intensity = 1f; int numberOfFrames = Mathf.RoundToInt((intensity - 0.1f) / Step); float delay = duration / numberOfFrames; for (int i = 0; i < numberOfFrames; ++i) { lamp.SetEmissionIntensity(intensity); intensity -= Step; yield return(new WaitForSeconds(delay)); } lamp.SetOFF(); }
public TrafficLight() { GameObject topLamp = GameObject.Find("TrafficLightBase/TrafficLightHead/TopLamp"); GameObject middleLamp = GameObject.Find("TrafficLightBase/TrafficLightHead/MiddleLamp"); GameObject bottomLamp = GameObject.Find("TrafficLightBase/TrafficLightHead/BottomLamp"); this.topLamp = new TrafficLightLamp(new Color(0.1f, 0f, 0f, 0f), new Color(1f, 0f, 0f, 0f), topLamp); this.middleLamp = new TrafficLightLamp(new Color(0.1f, 0.1f, 0f, 0f), new Color(1f, 1f, 0f, 0f), middleLamp); this.bottomLamp = new TrafficLightLamp(new Color(0f, 0.1f, 0f, 0f), new Color(0f, 1f, 0f, 0f), bottomLamp); currentState = States.OFF; this.topLamp.SetOFF(); this.middleLamp.SetOFF(); this.bottomLamp.SetOFF(); }