From 766cdff5ffa72b65d7f106658d1603f47739b2ba Mon Sep 17 00:00:00 2001 From: chai <215380520@qq.com> Date: Fri, 27 Oct 2023 11:05:14 +0800 Subject: + init --- GameCode/SpawnObjectOnDealDamage.cs | 50 +++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 GameCode/SpawnObjectOnDealDamage.cs (limited to 'GameCode/SpawnObjectOnDealDamage.cs') diff --git a/GameCode/SpawnObjectOnDealDamage.cs b/GameCode/SpawnObjectOnDealDamage.cs new file mode 100644 index 0000000..be5b365 --- /dev/null +++ b/GameCode/SpawnObjectOnDealDamage.cs @@ -0,0 +1,50 @@ +using UnityEngine; +using UnityEngine.Events; + +public class SpawnObjectOnDealDamage : DealtDamageEffect +{ + public UnityEvent triggerEvent; + + public float damageNeeded = 25f; + + public float cd = 0.2f; + + private float time; + + private float damageDealt; + + private SpawnObjectEffect spawn; + + private DamageEffect dmgEffect; + + public bool allowSelfDmg; + + private void Start() + { + spawn = GetComponent(); + dmgEffect = GetComponent(); + } + + public override void DealtDamage(Vector2 damage, bool selfDamage, Player damagedPlayer = null) + { + if (selfDamage && !allowSelfDmg) + { + return; + } + damageDealt += damage.magnitude; + if (damageDealt > damageNeeded && Time.time > time + cd) + { + time = Time.time; + damageDealt = 0f; + if ((bool)spawn) + { + spawn.DoEffect(damage); + } + if ((bool)dmgEffect) + { + dmgEffect.DoDamageEffect(damage, selfDamage, damagedPlayer); + } + triggerEvent.Invoke(); + } + } +} -- cgit v1.1-26-g67d0