示例#1
0
        public void TakeDamage(Damager damager, bool ignoreInvincible = false)
        {
            if ((_invulnerable && !ignoreInvincible) || _damageableModel.CurrentHealth <= 0)
            {
                return;
            }

            if (!_invulnerable)
            {
                _damageableModel.CurrentHealth -= damager.CountDamage;
                if (_damageableModel.CurrentHealth < 0)
                {
                    _damageableModel.CurrentHealth = 0;
                }
                OnHealthChanged?.Invoke(this);
            }

            OnTakeDamage?.Invoke(damager, this);

            if (invulnerableAfterDamage)
            {
                _invulnerable        = true;
                _inulnerabilityTimer = invulnerabilityDuration;
            }

            if (_damageableModel.CurrentHealth <= 0)
            {
                OnDie?.Invoke(damager, this);
                EnableInvulnerability();
                if (disableOnDeath)
                {
                    gameObject.SetActive(false);
                }
            }
        }
示例#2
0
        public void Hit(Damager damager, Damageable damageable)
        {
            if (damageable.CurrentHealth <= 0)
            {
                return;
            }

            _animator.SetTrigger(_HashHitPara);
        }
示例#3
0
 public void Die(Damager damager, Damageable damageable)
 {
     _animator.SetTrigger(_HashDeathPara);
     _dead = true;
 }
示例#4
0
        public void OnHurt(Damager damager, Damageable damageable)
        {
            damageable.EnableInvulnerability();

            _animator.SetTrigger(_HashHurtPara);
        }