Libgdx SpriteBatch以某种方式围绕绘图位置,图像随着相机移动而略微抖动

时间:2015-02-11 15:39:04

标签: java android eclipse libgdx spritebatch

我正在制作一款游戏,玩家可以从顶部看到游戏。 (GTA2观看类型)因此,当摄像机在地图中的任何位置移动时,摄像机跟随玩家。但是,随着相机位置的变化,图像会轻微抖动。

我已经检查了摇动对象的x和y变量,即使它们是恒定的,与游戏的其他组件隔离,我也有同样的问题。但是当我全屏测试游戏时它就消失了,所以当相机尺寸很小时,libgdx可能会以某种方式围绕物体位置。另一个线索是,当我使用非常细的线条图像(如网络图像)时,根据相机位置只显示一些线条(当我使用全屏时它会再次解决)。所以解决方案可能就像

font.setUseIntegerPositions(false);

就SpriteBatch而言。

相机尺寸和初始化如下:

public static int cameraWidth = 620;
public static int cameraHeight = 320;
...
camera = new OrthographicCamera();
camera.setToOrtho(false, cameraWidth, cameraHeight);


//---inside the render--
//Update the Time Variable
stateTime += Gdx.graphics.getDeltaTime();
//Clear the Screen
Gdx.gl.glClearColor(1F, 1F, 1F, 1F);
Gdx.gl.glClear(GL30.GL_COLOR_BUFFER_BIT);
//Set the Camera
final float cameraMaxY = mapHeight+menuHeight-cameraHeight/2;
final float cameraMinY = cameraHeight/2;
final float cameraMovableY = cameraMaxY - cameraMinY;
final float cameraMaxX = mapWidth-cameraWidth/2;
final float cameraMinX = cameraWidth/2;
final float cameraMovableX = cameraMaxX - cameraMinX;
camera.position.set(cameraMinX+cameraMovableX*cameraFollow.body.getPosition().x/mapWidth,cameraMinY+cameraMovableY*cameraFollow.body.getPosition().y/mapHeight,0);
camera.update();

其中cameraFollow只是一个表示物理世界中对象的变量。我确信camera.position.set算法不是原因。我能做些什么来让libgdx在没有任何近似值的情况下将所有内容都绘制在它们的确切位置?

0 个答案:

没有答案