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.
37 lines
958 B
37 lines
958 B
using Spine.Unity;
|
|
using UnityEngine;
|
|
|
|
public class DamagedEffectHandler : MonoBehaviour, IOwnedComponent<Character>
|
|
{
|
|
static readonly float _redEffectDuration = 0.8f;
|
|
|
|
public Character Owner { get; private set; }
|
|
|
|
float redEffectRemainTime;
|
|
|
|
public void Initialize(Character owner)
|
|
{
|
|
Owner = owner;
|
|
Owner.OnDamaged += OnDamaged;
|
|
}
|
|
|
|
private void OnDamaged(Character _, Damage damage)
|
|
{
|
|
redEffectRemainTime = _redEffectDuration;
|
|
}
|
|
|
|
private void Update()
|
|
{
|
|
float prevTime = redEffectRemainTime;
|
|
redEffectRemainTime = Mathf.Max(redEffectRemainTime - Time.fixedDeltaTime, 0f);
|
|
|
|
if (prevTime > redEffectRemainTime)
|
|
Owner.SkeletonAnimation.Skeleton.SetColor(Color.Lerp(Color.white, Color.red, redEffectRemainTime / _redEffectDuration));
|
|
}
|
|
|
|
private void OnDestroy()
|
|
{
|
|
if (Owner == null) return;
|
|
Owner.OnDamaged -= OnDamaged;
|
|
}
|
|
}
|