Скорость анимации\поворота

Версия Minecraft
1.10+
355
2
17
Доброго времени суток :)

Насколько я знаю, количество вызовов отрисовки допустим того же GUI или игрока, зависят от его FPS.
И увеличивать допустим тот же поворот (rotate++) при каждой отрисовке немного проблематично, ибо у тех, у кого FPS маленький - анимация будет медленная, а у кого большой - очень быстрая.

Как можно сделать повышение того же rotate++ так, чтобы вне зависимости от FPS скорость была одинакова? Желательно, чтобы это как-то было связанно с System.currentTimeMillis() чтобы значение было одинаковое у клиентов.

Находил что-то вроде System.currentTimeMillis() % 360, но там большие пропуски значений..
 
Решение
@Agravaine правильно говорит, ибо рендер обновляется каждый кадр. По поводу дельтаТайма, не на 1.000.000, а на 1.000.000.000 делить надо, тогда будет, что-то тип 0.0167 для 60, и 0.033 для 30 фпс. Так же нужно интерполировать поворот, чтобы был плавным. Ну а про то как "прикрутить" можно почитать в инете.
355
2
17
Не совсем понял как приблизительно это сделать. deltaTime получаю так:

Java:
long time = System.nanoTime();
int delta_time = (int) ((time - lastTime) / 1000000);
lastTime = time;

Итого при ограничении в 30 фпс выдает среднее около 33~, а при снятии ограничения (250+ FPS) дельта выдает около 4~
Как анимацию то к ним прикрутить?)



Прибавлять не в тендере, а в тиках.

Тоже думал, но мне желательно чтобы это как-то зависело от System.currentTimeMillis(), чтобы значение было приблизительно у всех одинаковое, тогда можно будет запускать анимацию и она должна отыграться у всех клиентов без потребности какой-либо синхронизации, если конечно так можно вообще.
 

Icosider

Kotliner
Администратор
3,600
99
663
@Agravaine правильно говорит, ибо рендер обновляется каждый кадр. По поводу дельтаТайма, не на 1.000.000, а на 1.000.000.000 делить надо, тогда будет, что-то тип 0.0167 для 60, и 0.033 для 30 фпс. Так же нужно интерполировать поворот, чтобы был плавным. Ну а про то как "прикрутить" можно почитать в инете.
 
Сверху