Files
beyond/Assets/Scripts/FireLight.cs
2024-11-20 15:21:28 +01:00

47 lines
1.3 KiB
C#

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<Light>();
}
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;
}
}