public virtual void Initialize()
 {
     Health    = _unit.UnitData.MaxHealth;
     MaxHealth = Health;
     OnCurrentHealthChanged?.Invoke(Health);
     OnMaxHealthChanged?.Invoke(MaxHealth);
 }
 public virtual void TakeDamage(int damage, DamageType damageType, Unit attacker)
 {
     Health -= damage;
     OnCurrentHealthChanged?.Invoke(Health);
     if (Health <= 0)
     {
         OnDefeated?.Invoke();
     }
     OnTakeDamage?.Invoke(damage, damageType, attacker);
 }
예제 #3
0
        /// <summary>
        /// The player or enemy is getting damaged.
        /// </summary>
        /// <param name="damage"></param>
        public virtual void TakeDamage(int damage)
        {
            damage = Mathf.Clamp(damage, 0, int.MaxValue);

            // Subtract damage from health.
            CurrentHealth.BaseValue -= damage;
            Debug.Log(transform.name + " took " + damage + " damage!");

            // Update the UI using the listener.
            onCurrentHealthChangedCallback.Invoke();

            if (CurrentHealth.BaseValue <= 0)
            {
                Die();
            }
        }