WaitForSeconds не работает

создаю игру на основе тетриса для чего нужна coroutina но функция WaitForSeconds проигрывается слишком быстро

void Update () {
    StartCoroutine(GenerateFigure());
}

IEnumerator GenerateFigure () {
    yield return new WaitForSeconds(0.5f);
    Instantiate(
        Generate(), //функция которая выдаёт рандомную фигуру
        new Vector3(0f, 3f, 0f),
        Quaternion.identity
    );
}

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

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

Как по мне проще использовать метод Invoke()

Так как используемому варианту я не очень доверяю, а через Invoke() гораздо проще. Нужно просто запихнуть необходимую команду(ы) в функцию и выполнить её через этот метод. (p.s. Я сам использую данный метод)

В вашем случае

void ObjGenerate() {
   Instantiate(
        Generate(), //функция которая выдаёт рандомную фигуру
        new Vector3(0f, 3f, 0f),
        Quaternion.identity
   );
}

void Update () {
    StartCoroutine(GenerateFigure());
}

IEnumerator GenerateFigure () {
    Invoke("ObjGenerate", 2f); //первое значение это функция которая выполнится, а второе значение это задержка в секундах
}

Надеюсь помог

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

Попробуй изменить свой код так. Должно получиться то, что ты хочешь

private void Start() 
{
    StartCoroutine(GenerateFigure());
}

private IEnumerator GenerateFigure() 
{
    while(true)
    {
        yield return new WaitForSeconds(0.5f);
        Instantiate(
            Generate(), //функция которая выдаёт рандомную фигуру
            new Vector3(0f, 3f, 0f),
            Quaternion.identity
        );
    }
}
→ Ссылка