Проект на смартфоне в 2D, необходимо что бы за строго ограниченное время (2 минуты) игровой объект поменял позицию конкретное число раз. При высоком FPS всё идёт гладко, если же FPS падает ниже 30, то объект не успевает за это время совершить нужное кол-во смен позиции.
Смена позиции заложена в корутину, которая запускается в Start(), потом идёт цикл пока не выйдет установленное время. Есть пересечение с функцией смены цвета объекта, которая меняет цвет в зависимости от количество пройденных позиций.
Как можно сделать что бы кол-во смен позиций всегда было одинаково вне зависимости от FPS?
Таймер отчёта времени:
Синтаксис:
Используется csharp
DateTime timerEnd;
TimeSpan delta;
Text gameTimer;
void FixedUpdate()
{
Timer();
}
void Timer()
{
if (delta.TotalSeconds >= 0)
{
delta = timerEnd - DateTime.Now;
gameTimer.text = $"{delta.Minutes} : {delta.Seconds}"; //вывод таймера на экран
}
if (delta.TotalSeconds <= 0)
{
playGame = false; // конец игры
}
}
Пробовал запускать через Time.fixedDeltaTime
Синтаксис:
Используется csharp
StartCoroutine(FlowerRespawn(TTLFlower * Time.fixedDeltaTime * 50)); // float TTLFlower - изменяет значение в зависимости от количество пройденных позиций
Пробовал так же переделать под функцию которую запускал в FixedUpdate().
Возможно ли вообще технически, то что я описал?