将正交相机结合到现有的Java游戏中

时间:2014-03-05 18:36:34

标签: java android libgdx orthographic

早些时候发布了关于这一点的内容。这是一个跟进。我有一个以前存在的Java游戏正在进行中。它完成了约95%。如果我安装了libGdx,我可以使用以前现有的java代码和LibGDX的正交相机来创建一个Android应用吗?我打算只使用相机调整屏幕大小,使其适合手机。我不会使用任何其他像spritebatch等任何人都有这方面的经验吗?

1 个答案:

答案 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版本。