Как сделать перезарядку персонажа с помощью корутины?

Можете помочь с написанием корутины для перезарядки? Алгоритм такой:перед выстрелом осуществить проверку булевой переменной,которая отобразит готов ли игрок к выстрелу или нет.Эта переменная должна изменяться из инспектора. При удачном выстреле запускается корутина, которая отсчитывает время перезарядки, установленное из инспектора, при это изменяя значение вышеописанной булевой переменной. У меня есть одна корутина(время жизни),написанная в другом скрипте:

private IEnumerator StartLife()
    {
        yield return new WaitForSeconds(lifeTime);
        Destroy(gameObject);
        yield break;
    }

Логику второй корутины нужно написать в скрипте игрока,где я и осуществляю выстрел.Буду признателен,если поможете с написанием собственной корутины.Или исправлением нынешней. Исправленная корутина


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

Автор решения: luvjungle

Можно это сделать без корутины, с помощью Invoke()

void Shoot()
{
    if (!canShoot) return;
    canShoot = false;

    // shoot logic

    Invoke(nameof(Reload), reloadTime);
}

void Reload()
{
    canShoot = true;
}

Если же нужна корутина, то так:

 void Shoot()
{
    if (!canShoot) return;
    canShoot = false;

    // shoot logic

    StartCoroutine(Reload());
}

IEnumerator Reload()
{
    yield return new WaitForSeconds(reloadTime);
    canShoot = true;
}
→ Ссылка