using UnityEngine; using System.Collections; public class CeilingLightController : MonoBehaviour { private Light ceilingLight; private Coroutine fadeCoroutine; private bool isFading = true; private Color defaultColor; private float defaultIntensity; public float fadeDuration = 0.5f; [SerializeField] public AudioClip soundClip; private AudioSource loopingSound; void Start() { ceilingLight = GetComponent(); defaultColor = ceilingLight.color; defaultIntensity = ceilingLight.intensity; ceilingLight.color = Color.red; ceilingLight.intensity = 0; fadeCoroutine = StartCoroutine(FadeInOut()); // Start looping sound if (SoundFXManager.instance != null && soundClip != null) { loopingSound = SoundFXManager.instance.PlayLoopingSound(soundClip, transform, 0.01f); } } IEnumerator FadeInOut() { while (isFading) { float timer = 0f; while (timer < fadeDuration) { timer += Time.deltaTime; float t = timer / fadeDuration; ceilingLight.intensity = Mathf.Lerp(0, defaultIntensity, t); yield return null; } ceilingLight.intensity = defaultIntensity; timer = 0f; while (timer < fadeDuration) { timer += Time.deltaTime; float t = timer / fadeDuration; ceilingLight.intensity = Mathf.Lerp(defaultIntensity, 0, t); yield return null; } ceilingLight.intensity = 0; } } public void StopFading() { if (fadeCoroutine != null) { StopCoroutine(fadeCoroutine); fadeCoroutine = null; } isFading = false; ceilingLight.color = defaultColor; ceilingLight.intensity = defaultIntensity; // Stop looping sound if (SoundFXManager.instance != null && loopingSound != null) { SoundFXManager.instance.StopLoopingSound(loopingSound); loopingSound = null; } } }