Это не зависит от частоты кадров.
Для простоты предположим, что deltaTime
фиксировано.
Если оно равно 0,1, вы будете добавлять одну частицу каждые 0,1 секунды, потому что 0,1>0,01.
Если это 0,01, вы будете добавлять одну частицу каждые 0,01 секунды.
Если это 1/60 (60 FPS), вы будете добавлять одну частицу каждые 1/60 (~ 0,01667) секунды, потому что 1/ 60 больше 0,01.
Если это 1/120, вы также будете добавлять одну частицу каждые 1/60 секунды, потому что 1/120 меньше 0,01 и 2 * 1/120 больше 0,01.
Если вам нужно фиксированное количество частиц за раз, вам нужно добавить несколько, если дельта велика.
Что-то вроде
while (time >= delay)
{
addParticle();
time -= delay;
}
Вы также не хотите устанавливать time
в 0, но сохраняете «время разлива» для следующего обновления.
Тамнедостаток этого подхода;добавление большего количества частиц требует времени, поэтому следующее обновление может появиться позже.Это может вызвать длительный волновой эффект.
Если это произойдет, вам понадобится более сложный подход.