diff options
author | chai <215380520@qq.com> | 2023-10-27 11:05:14 +0800 |
---|---|---|
committer | chai <215380520@qq.com> | 2023-10-27 11:05:14 +0800 |
commit | 766cdff5ffa72b65d7f106658d1603f47739b2ba (patch) | |
tree | 34d7799a94dfa9be182825577583c0fa6dc935f7 /GameCode/LineEffectExplosionModifier.cs |
+ init
Diffstat (limited to 'GameCode/LineEffectExplosionModifier.cs')
-rw-r--r-- | GameCode/LineEffectExplosionModifier.cs | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/GameCode/LineEffectExplosionModifier.cs b/GameCode/LineEffectExplosionModifier.cs new file mode 100644 index 0000000..3f1c66b --- /dev/null +++ b/GameCode/LineEffectExplosionModifier.cs @@ -0,0 +1,44 @@ +using System; +using System.Collections; +using UnityEngine; + +public class LineEffectExplosionModifier : MonoBehaviour +{ + public AnimationCurve curve; + + public float speed = 1f; + + private LineEffect effect; + + private Coroutine corutine; + + private void Start() + { + effect = GetComponent<LineEffect>(); + Explosion componentInParent = GetComponentInParent<Explosion>(); + componentInParent.DealDamageAction = (Action<Damagable>)Delegate.Combine(componentInParent.DealDamageAction, new Action<Damagable>(DealDamage)); + Explosion componentInParent2 = GetComponentInParent<Explosion>(); + componentInParent2.DealHealAction = (Action<Damagable>)Delegate.Combine(componentInParent2.DealHealAction, new Action<Damagable>(DealDamage)); + } + + public void DealDamage(Damagable damagable) + { + if (corutine != null) + { + StopCoroutine(corutine); + } + corutine = StartCoroutine(DoCurve()); + } + + private IEnumerator DoCurve() + { + float c = 0f; + float t = curve.keys[curve.keys.Length - 1].time; + while (c < t) + { + effect.offsetMultiplier = curve.Evaluate(c); + c += TimeHandler.deltaTime * speed; + yield return null; + } + } +} |