Как реализовать счетчик секунд в libgdx.

114
22 июня 2019, 00:30

Поясню : Я пишу игру файтинг. 1 раунд = 60 секунд. Я так понимаю это работа с Time.Util. Как получить игровое время? а именно секунды?

Answer 1

Инкрементируйте счетчик раз в секунду

    AtomicInteger ticker = new AtomicInteger(-1);
    Runnable runnableTask = () -> ticker.incrementAndGet();
    ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
    service.scheduleAtFixedRate(runnableTask, 0, 1, TimeUnit.SECONDS);
Answer 2

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

public roundTime=0;
public void startRound(){
    roundTime=60;
}
public boolean isEnded(float dt){
    roundTime-=dt;
    if(roundTime<=0){
        return true;
    }
    return false;
}

startRound() вызывать при начале раунда. В isEnded() передавать значение Gdx.graphics.getDeltaTime() (Естественно нужно еще доработать, но, думаю, вы справитесь)

READ ALSO
Выполнение нескольких sql запросов через addBatch

Выполнение нескольких sql запросов через addBatch

При использовании данного кода выполняется только самый первый запрос, в чем может быть причина?

149
Создание чата и какой набор технологий взять? [закрыт]

Создание чата и какой набор технологий взять? [закрыт]

Всем приветЕсть небольшая задачка на работе

152