maint: added livewatch asset
This commit is contained in:
@@ -0,0 +1,63 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Serialization;
|
||||
|
||||
namespace Ingvar.LiveWatch.TowerDefenceDemo
|
||||
{
|
||||
public class WaveEffect : MonoBehaviour
|
||||
{
|
||||
[SerializeField] private float _growDuration = 0.1f;
|
||||
[SerializeField] private float _stayDuration = 0.1f;
|
||||
[SerializeField] private Transform _wave;
|
||||
|
||||
private float _radius;
|
||||
private Coroutine _effectRoutine;
|
||||
|
||||
private void OnEnable()
|
||||
{
|
||||
SetSizeRaw(0);
|
||||
}
|
||||
|
||||
public void SetRadius(float radius)
|
||||
{
|
||||
_radius = radius;
|
||||
}
|
||||
|
||||
public void Play()
|
||||
{
|
||||
SetSizeRaw(0);
|
||||
|
||||
if (_effectRoutine != null)
|
||||
StopCoroutine(_effectRoutine);
|
||||
|
||||
_effectRoutine = StartCoroutine(EffectPlaying());
|
||||
}
|
||||
|
||||
private IEnumerator EffectPlaying()
|
||||
{
|
||||
SetSizeRaw(0);
|
||||
|
||||
var timer = _growDuration;
|
||||
|
||||
while (timer >= 0)
|
||||
{
|
||||
timer -= Time.deltaTime;
|
||||
|
||||
var progress = 1 - timer / _growDuration;
|
||||
SetSizeRaw(_radius * progress);
|
||||
|
||||
yield return null;
|
||||
}
|
||||
|
||||
yield return new WaitForSeconds(_stayDuration);
|
||||
|
||||
SetSizeRaw(0);
|
||||
}
|
||||
|
||||
private void SetSizeRaw(float value)
|
||||
{
|
||||
_wave.localScale = value * Vector3.one;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user