在Android上使用libgdx缩放到屏幕

时间:2014-04-25 09:27:42

标签: java android libgdx

我正在使用libgdx为Android创建一个简单的游戏。我已经遇到了针对不同设备使用不同屏幕尺寸的问题,但还没有找到关于如何处理这个问题的任何具体文档。

我想我应该使用OrthographicCamera?我到目前为止的代码示例是:

private OrthographicCamera camera;

public void create() {
        batch = new SpriteBatch();

        texture = new Texture(Gdx.files.internal("data/cube.png"));
        texture.setFilter(TextureFilter.Linear, TextureFilter.Linear);

        camera = new OrthographicCamera(1280, 720);

        sprite = new Sprite(texture);
        sprite.setOrigin(0, 0);
        sprite.setPosition(1280/2, 600);
}

public void render() {
        Gdx.gl.glClearColor(0.204f, 0.255f, 0.255f, 1);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

        batch.setProjectionMatrix(camera.combined);
        batch.begin();
        sprite.draw(batch);
        batch.end();

}

我是否沿着正确的路线走?我没有任何其他设备可以测试,我的模拟器给我带来了问题。

2 个答案:

答案 0 :(得分:0)

如果您还没有这样做,则应将LibGDX版本升级到最新版本1.0.0。在这个版本中,已经引入了所谓的Viewport

您可以找到一些屏幕截图和代码段以及您需要了解的所有内容here

基本上你必须决定采用某种策略(你的问题听起来像是ScreenViewportStretchViewport中的有趣问题)然后让它来管理你的相机。

答案 1 :(得分:0)

我在libGDX项目中使用的是override resize方法,并使用名为{{1的内置方法将OrthographicCamera设置为屏幕大小,如下所示如果您希望y轴指向下方,则将摄像机设置为当前大小的中心位置:

setToOrtho(boolean yDown)

但是,如果你想重新缩放纹理,这不会改变纹理的大小,我会建议而不是将它们设置为绝对大小,例如15像素尝试将它们设置为屏幕大小的百分比。

或者,另一种有时候更有效的方法是计算出一定大小的正确尺寸,例如800 x 480,然后计算出宽度的增加百分比并将其应用于精灵E.g:

@Override
public void resize(int width, int height){
    camera.setToOrtho(false);
}