Pro_Unit

Damager

Jan 7th, 2021
1,335
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 0.78 KB | None | 0 0
  1. using UnityEngine;
  2. using UniRx;
  3.  
  4. public class Damager : MonoBehaviour
  5. {
  6.     [SerializeField] private int _damage = 30;
  7.  
  8.     public int Damage
  9.     {
  10.         set => _damage = value;
  11.     }
  12.  
  13.     public GameObject Owner { get; set; }
  14.  
  15.     public Subject<Health> OnGiveDamage = new Subject<Health>();
  16.     public Subject<Health> OnFinalDamage = new Subject<Health>();
  17.  
  18.     private void OnTriggerEnter2D(Collider2D collision)
  19.     {
  20.         if (collision.TryGetComponent<Health>(out var health))
  21.         {
  22.             if (health.Owner.Equals(Owner)) return;
  23.  
  24.             OnGiveDamage.OnNext(health);
  25.  
  26.             var disposable = health.OnEmpty.Subscribe(OnFinalDamage);
  27.  
  28.             health.TakeDamage(_damage, gameObject);
  29.  
  30.             disposable.Dispose();
  31.         }
  32.     }
  33. }
Advertisement
Add Comment
Please, Sign In to add comment