Files
2025-08-31 18:14:07 -04:00

63 lines
1.4 KiB
C#

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;
}
}
}