Как переместить спрайт, независимый от устройства, по оси X (libgdx)

У меня есть Sprite, который я рисую в методе рендеринга, я также устанавливаю положение (x и y) на экране во время рисования.

Метод рендеринга для меня выглядит следующим образом (не работает с try и catch ниже и не зависит от устройства):

@Override
public void render(float delta) {
    game.batch.begin();
    game.batch.draw(backgroundgame,  0, 0, Gdx.graphics.getWidth(),
            Gdx.graphics.getHeight());
    game.batch.draw(car.sprite, xcar,
            (ycar));
    game.batch.end();
    /*try {
        xcar++;
        this.wait(50);
        game.batch.end();
    } catch (Exception e) {
        e.printStackTrace();
    }*/
}

В конструкторе класса я установил x и y позицию спрайта.

Мне было просто интересно, как я могу перемещать спрайт по оси X независимо от устройства? Могу ли я сделать это в методе рендеринга или мне нужен новый поток для спрайта?

Любая помощь высоко ценится!

1 ответ

Решение

Каждый кадр, если вы хотите переместить спрайт вдоль оси x, выполните:

sprite.setposition(lastx + 1*Gdx.graphics.getdeltatime(), some y) 
lastx = sprite.getX()

И не делайте batch.draw(), вместо этого используйте sprite.draw (batch). Batch.draw использует спрайт как тупую текстуру без позиции. С sprite.draw, он делает все рисование позиции и размера для вас.

И нить в играх - плохая вещь. Никогда не используйте темы, если вам это абсолютно не нужно. IE загружает что-то

Все в играх делается каждый кадр (используя основной поток). Или же вы получаете проблемы с синхронизацией с другими потоками, и это становится беспорядком.

И именно поэтому вы получаете падение fps и отставание в играх, если ваше оборудование не может их запустить, потому что время обработки всех команд на кадр становится заметным.

Другие вопросы по тегам