Хочу сделать игрока неуязвимым после получение урона

public class PlayerCharacters : MonoBehaviour
{

    [SerializeField] private Text HealthText;

    public int Health = 3;
    bool OnDamage = true;

    private void Start()
    {
        HealthText.text = "Health: " + Health;           
    }

    #region HealthSystem
    public void HealthDamage(int damage)
    {

        if (OnDamage)
        {
            StartCoroutine(Damage(damage));
            OnDamage = false;
        }
        else
        {
            OnDamage = true;
        }        
    }

    private IEnumerator Damage(int damage)
    {
        Health -= damage;
        HealthText.text = "Health: " + Health;

        yield return new WaitForSeconds(1);
    }
    #endregion
}

не знаю как сделать что-бы спустя примерно 5 секунд игрок снова мог получать урон и естественно во время этого не мог получать урон, пробовал то что знаю, но ничего не помогло, сейчас код стоит на том уровне где я что-то пытался делать.


Ответы (2 шт):

Автор решения: Danis
damageTime = текущие время
if (текущие время + damageTime >= 5)
        {
            StartCoroutine(Damage(damage));
            damegeTime = текущие время
        } 


→ Ссылка
Автор решения: Andrew

в библиотеки LeanTween есть прекрасная функция - DelayedCall()

Подключаешь сам ассет и делаешь вот это:

OnDamage = false;
LeanTween.delayedCall(gameobject, 5.0f, { OnDamage = true; } );

вообще там много полезных вещей которые будет удобно использовать в проэкте, весьма советую ознакомится с даной библиотекой в целом. Она прям маст хэв для любого проэкта.

→ Ссылка