Скорость объектов в libGDX - PullRequest
       19

Скорость объектов в libGDX

0 голосов
/ 28 января 2020

Как правильно перемещать объекты в игре с заданной скоростью в libGDX? Например. У меня есть круг в нижней части экрана, и я хочу переместить его вверх со скоростью 10 пикселей в секунду. Все телефоны имеют разные скорости, поэтому разность времени рендеринга на каждом телефоне разная, так как я могу это сделать?

Ответы [ 2 ]

2 голосов
/ 29 января 2020

Я не уверен, что именно вы подразумеваете под этим:

Все телефоны имеют разные скорости, поэтому дельта-время рендеринга на каждом телефоне отличается ...

Но я думаю, что ваше понимание значения 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
}
1 голос
/ 29 января 2020

Вы можете установить дельта-время с помощью метода libGDX :

world.step(Gdx.graphics.getDeltaTime());

В конце метода render(). Это позволяет libGDX управлять FPS .

. Для адаптации скорости объектов к вашим желаниям вы можете использовать Коэффициент пикселей на метр: http://seanballais.github.io/blog/box2d-and-the-pixel-per-meter-ratio/

...