【问题标题】:How to move a sprite device-independent along the x-axis (libgdx)如何沿 x 轴移动与设备无关的精灵 (libgdx)
【发布时间】:2018-03-12 06:25:55
【问题描述】:

我有一个在 render 方法中绘制的 Sprite,我还在绘制时在屏幕上设置了位置(x 和 y)。

render 方法对我来说是这样的(不适用于下面的 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 轴独立于设备移动精灵?我可以在渲染方法中执行此操作,还是需要为 Sprite 创建一个新线程?

非常感谢任何帮助!

【问题讨论】:

标签: android animation libgdx sprite


【解决方案1】:

每一帧,如果你想沿 x 轴移动精灵,请执行以下操作:

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

不要这样做 batch.draw() 而是使用 sprite.draw(batch)。 Batch.draw 使用 sprite 作为没有位置的哑纹理。使用 sprite.draw,它会为您完成所有位置和尺寸的绘制。

在游戏中使用线程是一件坏事。除非绝对需要,否则切勿使用线程。 I.E. 加载一些东西

游戏中的一切都是在每一帧完成的(使用主线程)。否则,您会遇到与其他线程的同步问题,并且会变得一团糟。

这就是为什么如果您的硬件无法运行它们,您会在游戏中出现 fps 下降和滞后,因为每帧处理所有命令的时间变得很明显。

【讨论】:

  • 非常感谢!
  • 您能否将我的问题标记为正确的遮阳篷?单击小复选标记,使其变为绿色。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-10-31
  • 1970-01-01
  • 1970-01-01
  • 2023-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多