简体   繁体   中英

support screen sizes libgdx - android

I'm trying to develop a snake game to Android devices using Libgdx. As we all know, the snake game is based on a grid which holds different cells.

Now, I have developed the first version of the game. In the desktop, it looks fine, however, in big Android devices(Galaxy S4, HTC ONE), all the objects look very small. Furthermore, the functionality of the game has been "destoyed".

In the desktop, the game runs on a resolution of 480px Width X 800px Height(OrthographicCamera). I also defined in the game screen an instance of a Viewport class and set it to FillViewPort(when the resize method in invoked, I update the viewport).

Obviously all this things didn't work. The game size is still distorted.

How can I maintain this fixed resolution or I do I scale the game and keep this ratio between the pixels.

PS I have tried to implement all the types of Viewports as they are documented in the official site of libgdx - https://github.com/libgdx/libgdx/wiki/Viewports

Didn't help my snake game.

Here is my screen's code:

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      
    }
}
viewport = new ExtendViewport(480, 800,camera);

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM