Java libGDX滚动背景在一段时间后变得起伏

Java libGDX滚动背景在一段时间后变得起伏,java,libgdx,Java,Libgdx,我是libgdx的新手,所以请容忍我。我正在尝试创建一个2D跑步游戏,并尝试实现一个滚动背景。到目前为止,我已经能够得到的背景滚动,但过了一段时间,它变慢,变得波涛汹涌。下面是我如何实现它的: 在我的创建方法中 bg = new Texture(Gdx.files.internal("bg1.png")); bg.setWrap(Texture.TextureWrap.Repeat, Texture.TextureWrap.Repeat); 在我的渲染方法中 try { sourceX

我是libgdx的新手,所以请容忍我。我正在尝试创建一个2D跑步游戏,并尝试实现一个滚动背景。到目前为止,我已经能够得到的背景滚动,但过了一段时间,它变慢,变得波涛汹涌。下面是我如何实现它的:

在我的创建方法中

bg = new Texture(Gdx.files.internal("bg1.png"));
bg.setWrap(Texture.TextureWrap.Repeat, Texture.TextureWrap.Repeat);
在我的渲染方法中

try {
    sourceX += 15;
} catch (Exception e){
    sourceX=0;
}
game.batch.draw(bg, 0, 0, sourceX, 0, Gdx.graphics.getWidth(),Gdx.graphics.getHeight());

这似乎有效,但过了一段时间,情况变得不稳定。如果您有任何建议,我们将不胜感激。

当您的数字达到更高的数量级时,浮点精度可能会下降。通过将其保持在较低范围来保持精度:

sourceX = (sourceX + 15f) % bg.getWidth();
但是,如果您想要在所有设备上都保持相同的恒定速度,则还需要包含增量时间和速度:

sourceX = (sourceX + Gdx.graphics.getDeltaTime() * 900f) % bg.getWidth();

确保
sourceX
是一个浮点数,而不是一个整数。

你所说的起伏是什么意思?fps下降?使用
FPSLogger
检查您的成帧器,可能您也有内存泄漏,为什么在try块中有
sourceX+=15
?这不会引发异常,它开始结巴或滞后。这将不再是一个平稳的过渡我明白了,但你的帧速率是多少?它会变低吗?(我想是的,但是你为什么不检查一下呢?)我刚刚检查了一下,我的帧速率没有下降