using UnityEngine; using UnityEngine.Experimental.Rendering.Universal; public class FlickeringWallLight : WallLight { public bool flicker; private float timeSinceLastLightChange; private bool variationChanged; public float pauseTimeBase; private float currentPauseTime; public float timeVariation; private float currentTimeVariation; public float intensityVariation; public Light2D targetLight; private void Awake() { float variation = Random.Range(0, intensityVariation); targetLight.intensity -= variation; } private void FixedUpdate() { LightUpdate(); if (!variationChanged) { currentTimeVariation = Random.Range(-timeVariation, timeVariation); currentPauseTime = pauseTimeBase + currentTimeVariation; variationChanged = true; } if (flicker) { timeSinceLastLightChange += Time.deltaTime; if (timeSinceLastLightChange >= currentPauseTime) { ChangeLightState(); timeSinceLastLightChange = 0.0f; variationChanged = false; } } } }