我正在使用LibGDX制作游戏。我有4个纹理作为视差背景以及一些障碍物(其中一个在屏幕的上部,其他在下部),这是移动部分:
//Parallax
if (bckgndmiddle_x <= -Const.VIEWPORT_W*2+(game_speed*delta)/2) bckgndmiddle_x=-(game_speed*delta)/2; else bckgndmiddle_x-=(game_speed*delta)/2;
if (bckgndfar_x <= -Const.VIEWPORT_W*2+(game_speed*delta)/5) bckgndfar_x=-(game_speed*delta)/5; else bckgndfar_x-=(game_speed*delta)/5;
for (Obstacle obst:obstacles) {
obst.update(game_speed*delta);
}
//End Main game loop
player.update();
game.batch.begin();
game.batch.draw(wall, bckgndfar_x,floor.getRegionHeight()+100);
game.batch.draw(wall, bckgndfar_x+wall.getRegionWidth(),floor.getRegionHeight()+100);
game.batch.draw(bot_furniture, bckgndmiddle_x,floor.getRegionHeight());
game.batch.draw(bot_furniture, bckgndmiddle_x+bot_furniture.getRegionWidth(),floor.getRegionHeight());
game.batch.draw(floor, bckgndmiddle_x,0);
game.batch.draw(floor, bckgndmiddle_x+floor.getRegionWidth(),0);
game.batch.draw(ceiling, bckgndfar_x,Const.VIEWPORT_H-ceiling.getRegionHeight());
game.batch.draw(ceiling, bckgndfar_x+ceiling.getRegionWidth(),Const.VIEWPORT_H-ceiling.getRegionHeight());
障碍物更新方法只是x-=speed;因为speed是接收的参数。
问题在于有时纹理会奇怪地晃动,就像设备无法处理游戏并且会冻结一小段时间。
有什么线索说明为什么会发生这种情况吗?
编辑
发生的是纹理不时地卡顿(我是西班牙人,不知道那个词)
我认为这必须与背景每部分的第二张图像有关,即增加宽度。 像它增加宽度一样,但有时由于fps下降而太多,下一次它会“移回”到正常位置,因为fps恢复正常。
编辑2 我尝试了没有障碍物,还是出现了卡顿现象,我又试了一遍加上障碍物但去掉背景,就没有问题了,所以肯定是我在第一个编辑中说的问题。
顺便说一句,FPS下降不到1(已检查)
我刚刚尝试了绘制整个背景图像(没有视差),仍然存在同样的问题。