Видя, как этот ответ имеет много точек зрения, я должен указать на проблему с принятым ответом и предложить альтернативное решение.
Ваш «таймер» будет медленно дрейфовать, чем дольше вы будете запускать программу из-за округления, вызванного следующей строкой кода:
time = 0;
Причина в том, что условие if проверяет, является ли значение времени большим или равным 5 (очень вероятно, что оно будет больше из-за ошибок округления, а время между кадрами может варьироваться). Более надежное решение - не «сбрасывать» время, а вычитать время, которое вы ждали:
private static final float WAIT_TIME = 5f;
float time = 0;
public void update(float deltaTime) {
time += deltaTime;
if (time >= WAIT_TIME) {
// TODO: Perform your action here
// Reset timer (not set to 0)
time -= WAIT_TIME;
}
}
Вы, скорее всего, не заметите эту тонкую проблему во время быстрых тестов, но, запустив приложение на пару минут, вы можете начать замечать ее, если внимательно посмотрите на время событий.