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); } } }
public void Hit(Damager damager, Damageable damageable) { if (damageable.CurrentHealth <= 0) { return; } _animator.SetTrigger(_HashHitPara); }
public void Die(Damager damager, Damageable damageable) { _animator.SetTrigger(_HashDeathPara); _dead = true; }
public void OnHurt(Damager damager, Damageable damageable) { damageable.EnableInvulnerability(); _animator.SetTrigger(_HashHurtPara); }