早些时候发布了关于这一点的内容。这是一个跟进。我有一个以前存在的Java游戏正在进行中。它完成了约95%。如果我安装了libGdx,我可以使用以前现有的java代码和LibGDX的正交相机来创建一个Android应用吗?我打算只使用相机调整屏幕大小,使其适合手机。我不会使用任何其他像spritebatch等任何人都有这方面的经验吗?
答案 0 :(得分:1)
那会有效。您关心的方法不依赖于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版本。