0

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

4

1 回答 1

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);
   }

上面的falses 使 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 版本。

于 2014-03-05T19:21:28.400 回答