示例#1
0
 public void GiveDamage(float damage)
 {
     _health -= damage;
     onPlayerHealthChange?.Invoke(_health);
     _healingState = HealingState.Injured;
     StopAllCoroutines();
 }
示例#2
0
 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;
             }
         }
     }
 }
示例#3
0
    private IEnumerator CheckForHeal()
    {
        yield return(new WaitForSeconds(5f));

        _healingState = HealingState.Healing;
    }