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/AttackTrigger.cs |
+ init
Diffstat (limited to 'GameCode/AttackTrigger.cs')
-rw-r--r-- | GameCode/AttackTrigger.cs | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/GameCode/AttackTrigger.cs b/GameCode/AttackTrigger.cs new file mode 100644 index 0000000..a452de0 --- /dev/null +++ b/GameCode/AttackTrigger.cs @@ -0,0 +1,43 @@ +using System; +using UnityEngine; +using UnityEngine.Events; + +public class AttackTrigger : MonoBehaviour +{ + public bool triggerOnEveryShot = true; + + public UnityEvent triggerEvent; + + private CharacterData data; + + private void Start() + { + data = GetComponentInParent<CharacterData>(); + Gun gun = data.weaponHandler.gun; + gun.ShootPojectileAction = (Action<GameObject>)Delegate.Combine(gun.ShootPojectileAction, new Action<GameObject>(Shoot)); + data.weaponHandler.gun.AddAttackAction(Attack); + } + + private void OnDestroy() + { + Gun gun = data.weaponHandler.gun; + gun.ShootPojectileAction = (Action<GameObject>)Delegate.Remove(gun.ShootPojectileAction, new Action<GameObject>(Shoot)); + data.weaponHandler.gun.RemoveAttackAction(Attack); + } + + public void Attack() + { + if (!triggerOnEveryShot) + { + triggerEvent.Invoke(); + } + } + + public void Shoot(GameObject projectile) + { + if (triggerOnEveryShot) + { + triggerEvent.Invoke(); + } + } +} |