zombie_mp/Assets/HQ FPS Weapons/Scripts/Interactables/Firelight.cs
Sewmina Dilshan 68183e5317 initial
2021-08-23 13:28:33 +05:30

75 lines
1.5 KiB
C#

using System.Collections;
using UnityEngine;
namespace HQFPSWeapons
{
[RequireComponent(typeof(Light))]
public class Firelight : MonoBehaviour
{
[SerializeField]
[Range(0.1f, 3f)]
private float m_ToggleDuration = 0.5f;
[SerializeField]
[Range(0.1f, 3f)]
private float m_LightIntensity = 1f;
[SerializeField]
[Range(0.5f, 3f)]
private float m_LightRange = 2f;
[SerializeField]
[Range(0f, 3f)]
[Tooltip("How much the light intensity changes over time.")]
private float m_IntensityNoise = 1f;
private Light m_Light;
private bool m_IsInTransition;
private bool m_TargetState;
public void Toggle(bool toggle)
{
m_TargetState = toggle;
StopAllCoroutines();
StartCoroutine(C_Toggle(toggle));
}
private void Awake()
{
m_Light = GetComponent<Light>();
}
private void Update()
{
if(!m_IsInTransition && m_TargetState)
m_Light.intensity = m_LightIntensity + Mathf.PerlinNoise(Time.time, Time.time + 3f) * m_IntensityNoise;
}
private IEnumerator C_Toggle(bool toggle)
{
m_IsInTransition = true;
float endTime = Time.time + m_ToggleDuration;
while(Time.time < endTime)
{
// Intensity.
m_Light.intensity = Mathf.MoveTowards(
m_Light.intensity,
toggle ? m_LightIntensity : 0f,
Time.deltaTime * m_LightIntensity / m_ToggleDuration);
// Range.
m_Light.range = Mathf.MoveTowards(
m_Light.range,
toggle ? m_LightRange : 0f,
Time.deltaTime * m_LightIntensity / m_ToggleDuration);
yield return null;
}
m_IsInTransition = false;
}
}
}