using UnityEngine; public class FireLight : MonoBehaviour { public Light fireLight; public float intensityMin = 0.5f; public float intensityMax = 1.5f; public float flickerSpeed = 0.1f; public float movementRadius = 0.1f; public float movementSpeed = 0.1f; private Vector3 initialPosition; private float randomOffset; void Start() { if (fireLight == null) { fireLight = GetComponent(); } initialPosition = fireLight.transform.position; randomOffset = Random.Range(0f, 100f); } void Update() { FlickerLight(); MoveLight(); } void FlickerLight() { float noise = Mathf.PerlinNoise(Time.time * flickerSpeed, randomOffset); fireLight.intensity = Mathf.Lerp(intensityMin, intensityMax, noise); } void MoveLight() { float noiseX = Mathf.PerlinNoise(Time.time * movementSpeed, randomOffset) - 0.5f; float noiseY = Mathf.PerlinNoise(Time.time * movementSpeed, randomOffset + 1) - 0.5f; float noiseZ = Mathf.PerlinNoise(Time.time * movementSpeed, randomOffset + 2) - 0.5f; Vector3 movement = new Vector3(noiseX, noiseY, noiseZ) * movementRadius; fireLight.transform.position = initialPosition + movement; } }