спавн объекта быстрее каждые 30 секунд

Создаю 2d игру. Сделал спавн врага:

public float Timer = 15f;
public float START = 5F;
public GameObject CHICKEN;
void Start()
{
    InvokeRepeating("instanti", START, Timer);
}


void instanti()
{
    Instantiate(CHICKEN, transform.position, transform.rotation);
}

и хочу чтобы они каждые 30 секунд спавнились быстрее. Но не получилось. Пытался найти ролики на ютубе насчет этого и это тоже нет. Ищу последнюю надежду здесь


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

Автор решения: Алексей Шиманский

каждые 30 секунд спавнились быстрее.

Это невозможное и противоположное условие само по себе.

Есть вариант сделать счётчик и ускорять спавн каждые несколько итераций. Примерно как-то так:

public float Timer = 15f;
public float START = 5F;
public GameObject CHICKEN;

private int ciclesToSpeedUp = 2;
private float speedUpTimerDelta = 2f;
private float timerMinimum = 4f;
private int instantiatingCount = 0;

void Start() {
    StartCoroutine("instanti");
}

IEnumerator instanti() {
    yield return new WaitForSeconds(START);
 
    while (true) {
        Instantiate(CHICKEN, transform.position, transform.rotation);

        ++instantiatingCount;

        if (instantiatingCount == ciclesToSpeedUp) {
            if (Timer > timerMinimum)
                Timer -= speedUpTimerDelta;
        }

        yield return new WaitForSeconds(Timer);              
    }
}
→ Ссылка