早些时候发布了一些与此类似的东西。这是一个后续行动。我有一个先前存在的Java游戏正在进行中。其约95%完成。如果安装libGdx,是否可以将以前存在的Java代码与LibGDX的正交摄影机一起使用来创建android应用?我打算只使用相机来调整屏幕尺寸,使其适合手机。我不会使用任何其他东西,例如spritebatch等。有人有经验吗?
最佳答案
那可行。您关心的方法不依赖libgdx引擎的GL上下文,因此您可以实例化OrthographicCamera并通常在您自己的游戏代码中使用它。
用空的构造函数实例化一个OrthographicCamera,然后用您想要的屏幕视口的宽度和高度在其上调用setToOrtho
。这将取决于您用于精灵大小的单位,但是您可以执行以下操作来设置视口:
private static final float MIN_SCENE_HEIGHT_IN_GAME_UNITS= 480f; //FOR EXAMPLE
private static final float MIN_SCENE_WIDTH_IN_GAME_UNITS= 760f;
if (((float)screenWidthInPixels/(float)screenHeightInPixels) > (MIN_SCENE_WIDTH_IN_GAME_UNITS/MIN_SCENE_HEIGHT_IN_GAME_UNITS)){
orthoCam.setToOrtho(false, MIN_SCENE_HEIGHT_IN_GAME_UNITS*(float)screenWidthInPixels/(float)screenHeightInPixels, MIN_SCENE_HEIGHT_IN_GAME_UNITS);
} else {
orthoCam.setToOrtho(false, MIN_SCENE_WIDTH, MIN_SCENE_WIDTH_IN_GAME_UNITS*(float)screenHeightInPixels/(float)screenWidthInPixels);
}
上面的
false
是y朝上的,因此您可以根据需要翻转它。如果需要将摄像机移至0,0,请先调用orthocam.position.set(x,y,z)
,然后再调用orthocam.update()
。然后,您可以从
orthographicCamera.combined
获取所需的矩阵。如果您使用的是GL ES 1.0,则可以这样设置矩阵:
gl.glMatrixMode(GL10.GL_PROJECTION);
gl.glLoadMatrixf(orthographicCamera.combined.val, 0);
否则,您可以直接在着色器中使用
orthographicCamera.combined
您还可以将OrthographicCamera类及其超类Camera克隆到您的项目中,并删除不需要的方法来删除对引擎其他部分的依赖,并将其切换为使用自己的Vector3和Matrix4版本。