You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
42 lines
898 B
42 lines
898 B
2 years ago
|
using UnityEngine;
|
||
|
using System.Collections;
|
||
|
|
||
|
public class FlickerEffect : MonoBehaviour {
|
||
|
|
||
|
public float pauzeBeforeStart = 1.3f;
|
||
|
public float flickerSpeedStart = 15f;
|
||
|
public float flickerSpeedEnd = 35f;
|
||
|
public float Duration = 2f;
|
||
|
public bool DestroyOnFinish;
|
||
|
|
||
|
public GameObject[] GFX;
|
||
|
|
||
|
public void Start () {
|
||
|
StartCoroutine(FlickerCoroutine());
|
||
|
}
|
||
|
|
||
|
IEnumerator FlickerCoroutine(){
|
||
|
|
||
|
//pause before start
|
||
|
yield return new WaitForSeconds (pauzeBeforeStart);
|
||
|
|
||
|
//flicker
|
||
|
float t =0;
|
||
|
while(t < 1){
|
||
|
float speed = Mathf.Lerp (flickerSpeedStart, flickerSpeedEnd, MathUtilities.Coserp(0,1,t));
|
||
|
float i = Mathf.Sin(Time.time * speed);
|
||
|
foreach(GameObject g in GFX) g.SetActive(i>0);
|
||
|
t += Time.deltaTime/Duration;
|
||
|
yield return null;
|
||
|
}
|
||
|
|
||
|
//hide
|
||
|
foreach(GameObject g in GFX) g.SetActive(false);
|
||
|
|
||
|
//destroy
|
||
|
if (DestroyOnFinish) {
|
||
|
Destroy (gameObject);
|
||
|
}
|
||
|
}
|
||
|
}
|