public void GiveDamage(float damage) { _health -= damage; onPlayerHealthChange?.Invoke(_health); _healingState = HealingState.Injured; StopAllCoroutines(); }
private void CheckHealingState() { if (isPlayerAlive) { if (_healingState == HealingState.Injured) { _healingState = HealingState.WaitForTreatment; StartCoroutine(CheckForHeal()); } if (_healingState == HealingState.Healing) { _health++; onPlayerHealthChange?.Invoke(_health); if ((int)_health >= (int)_maxHealth) { _health = _maxHealth; _healingState = HealingState.Healthy; } } } }
private IEnumerator CheckForHeal() { yield return(new WaitForSeconds(5f)); _healingState = HealingState.Healing; }