支持屏幕大小libgdx - android

时间:2014-09-18 22:00:53

标签: android libgdx screen

我正在尝试使用Libgdx为Android设备开发蛇形游戏。 众所周知,蛇游戏是基于一个拥有不同细胞的网格。

现在,我开发了游戏的第一个版本。在桌面上,它看起来很好,但是,在大型Android设备(Galaxy S4,HTC ONE)中,所有对象看起来都非常小。此外,游戏的功能已经“失败”了。

在桌面游戏中,游戏的分辨率为480px Width X 800px Height(OrthographicCamera)。我还在游戏屏幕中定义了一个Viewport类的实例并将其设置为FillViewPort(当调用resize方法时,我更新视口)。

显然所有这些都没有用。游戏规模仍然扭曲。

如何保持这个固定的分辨率,或者我可以缩放游戏并在像素之间保持这个比例。

P.S我试图实现所有类型的视口,因为它们在libgdx的官方网站上有记录 - https://github.com/libgdx/libgdx/wiki/Viewports

没有帮我的蛇游戏。

这是我的屏幕代码:

package com.david.screens;

import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.Screen;
import com.badlogic.gdx.graphics.OrthographicCamera;
import com.badlogic.gdx.utils.viewport.ExtendViewport;
import com.badlogic.gdx.utils.viewport.FillViewport;
import com.badlogic.gdx.utils.viewport.Viewport;
import com.david.gameworld.GameRenderer;
import com.david.gameworld.GameWorld;
import com.david.helpers.InputHandler;

public class GameScreen implements Screen{

    private GameRenderer renderer;
    private GameWorld world;
    private OrthographicCamera camera;
    private Viewport viewport;

    public GameScreen() {
        world = new GameWorld();
        this.camera = new OrthographicCamera();
        this.camera.setToOrtho(false, 480, 800);
        viewport = new ExtendViewport(480, 800);
        renderer = new GameRenderer(world, camera);
        Gdx.input.setInputProcessor(new InputHandler(world.getSnake()));
    }

    @Override
    public void render(float delta) {
        // TODO Auto-generated method stub
        renderer.render(1/delta);
    }

    @Override
    public void resize(int width, int height) {
        // TODO Auto-generated method stub
        viewport.update(width, height);
    }

    @Override
    public void show() {
        // TODO Auto-generated method stub      
    }

    @Override
    public void hide() {
        // TODO Auto-generated method stub      
    }

    @Override
    public void pause() {
        // TODO Auto-generated method stub      
    }

    @Override
    public void resume() {
        // TODO Auto-generated method stub      
    }

    @Override
    public void dispose() {
        // TODO Auto-generated method stub      
    }
}

1 个答案:

答案 0 :(得分:1)

viewport = new ExtendViewport(480, 800,camera);

在绘制内容之前,不要忘记设置投影矩阵。