Как сделать перезарядку персонажа с помощью корутины?
Можете помочь с написанием корутины для перезарядки? Алгоритм такой:перед выстрелом осуществить проверку булевой переменной,которая отобразит готов ли игрок к выстрелу или нет.Эта переменная должна изменяться из инспектора. При удачном выстреле запускается корутина, которая отсчитывает время перезарядки, установленное из инспектора, при это изменяя значение вышеописанной булевой переменной. У меня есть одна корутина(время жизни),написанная в другом скрипте:
private IEnumerator StartLife()
{
yield return new WaitForSeconds(lifeTime);
Destroy(gameObject);
yield break;
}
Логику второй корутины нужно написать в скрипте игрока,где я и осуществляю выстрел.Буду признателен,если поможете с написанием собственной корутины.Или исправлением нынешней.

Ответы (1 шт):
Можно это сделать без корутины, с помощью 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;
}