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