Однако я сразу же столкнулся с проблемой. Я протестировал перемещение изображения логотипа BadLogic по умолчанию и заметил, что оно движется не совсем плавно. Он не слишком тормозит или что-то в этом роде, но я определенно часто наблюдаю некоторые небольшие подтормаживания.
Вот мой код:
Код: Выделить всё
package com.mygdx.game;
import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Input;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.math.Vector2;
import com.badlogic.gdx.utils.ScreenUtils;
public class MyGdxGame extends ApplicationAdapter {
SpriteBatch batch;
Texture img;
Vector2 pos;
float speed;
@Override
public void create () {
batch = new SpriteBatch();
img = new Texture("badlogic.jpg");
pos = new Vector2();
speed = 300f;
}
@Override
public void render () {
float deltaTime = Gdx.graphics.getDeltaTime();
//System.out.println("deltaTime:"+deltaTime);
if(Gdx.input.isKeyPressed(Input.Keys.LEFT)){
pos.x -= deltaTime * speed;
}
if(Gdx.input.isKeyPressed(Input.Keys.RIGHT)){
pos.x += deltaTime * speed;
}
ScreenUtils.clear(1, 0, 0, 1);
batch.begin();
batch.draw(img, pos.x, pos.y);
batch.end();
}
@Override
public void dispose () {
batch.dispose();
img.dispose();
}
}
- Получите разницу времени в методе рендеринга с помощью:
float deltaTime = Gdx.graphics.getDeltaTime(); - На основе ввода клавиш (ВЛЕВО/ВПРАВО) умножьте deltaTime на значение скорости и прибавьте к значению x логотипа;
Розыгрыш логотип основан на обновленном x.

Это все, что я сделал. Я также попробовал добавить фиксированное значение (pos.x += 5f;) без использования дельты времени, но результат был тот же. Я все еще мог видеть небольшие заикания в его движении.
Затем я распечатал deltaTime в каждом цикле и кое-что заметил.

Как видно из изображения, длина каждого кадра равна около 0,0167 до 0.0183.
Это подводит меня к двум вопросам:
- FPS проекта установлен на 60, поэтому каждый кадр должен быть 1/60 = 0,0166. ... второй. Таким образом, каждый кадр занимает немного больше времени, чем предполагалось.
- Возможно, это более важно, но... разница составляет примерно 0,0015 секунды (0,0167 – 0,0183). между кадрами, и я подозреваю, что это может быть причиной заиканий.

В этом случае каждый кадр занимает от 0,0166665 до 0,166668, поэтому разница составляет около 0,0000003, что намного меньше, чем LibGDX 0,0015. И изображение движется более плавно с помощью этого игрового цикла.
Я не совсем уверен, является ли это причиной заиканий или на это есть другие факторы, но я пытаюсь это выяснить. run — довольно простая программа, поэтому я немного запутался. Как я сказал вначале, главной привлекательностью LibGDX для меня была лучшая производительность рендеринга, но я этого не получаю.
Я что-то упускаю? Если не считать этой проблемы, мне очень нравится LibGDX, поэтому я надеюсь решить ее и продолжить разработку с ее помощью. Будем очень признательны за любую помощь или понимание этого вопроса!
Подробнее здесь: https://stackoverflow.com/questions/793 ... mple-image