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

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