Я не уверен, что именно вы подразумеваете под этим:
Все телефоны имеют разные скорости, поэтому дельта-время рендеринга на каждом телефоне отличается ...
Но я думаю, что ваше понимание значения delta в процессе рендеринга неверно. Как вы, наверное, уже знаете, метод render вызывается несколько раз в секунду, и после каждого завершенного вызова метода render экран обновляется. Сколько раз вызывается метод рендеринга, можно узнать, проверив Gdx.graphics.getFramesPerSecond()
. Так в чем же смысл значения delta ? delta - это просто промежуток времени между текущим кадром (этот вызов рендеринга) и последним кадром (вызов рендеринга непосредственно перед текущим) в секундах.
Из физики мы знаем, что distance = velocity * time
.
Таким образом, для перемещения объекта на расстояние 10 единиц в 1 секунду (единицами измерения могут быть пиксели, метры и т. Д. c ... - это на самом деле зависит от вашей камеры и логики рендеринга мира c ), мы должны вычислить правильное пройденное расстояние для текущего кадра. Мы знаем скорость и прошедшее время ( дельта ). Мы можем вычислить следующую позицию следующим образом
public void render(float delta) {
float velocity = 10.0f; // actually 10.0units / 1s
position = position + velocity * delta; // position can be circle.y to travel up
}