早些时候发布了一些与此类似的东西。这是一个后续行动。我有一个先前存在的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版本。

10-04 19:52