LibGDX делает область просмотра больше экрана - PullRequest
0 голосов
/ 22 мая 2018

Я уже давно борюсь с тем, как использовать и настраивать Viewports в LibGDX.Я хочу отображать все, что у него есть, на дисплее размером 1920x1080, и масштабировать его, чтобы он был включен, и мне нужна помощь, чтобы работать так.
Это - вот чтоЯ хочу, чтобы это выглядело (взято с компьютера с монитором 1920x1080), но когда я запускаю тот же код на моем ноутбуке, который составляет 1440x800, он выглядит как это .Я извиняюсь за плохое фото экрана, я не мог заставить его сделать скриншот игры, запущенной по любой причине, но это показывает, что верхняя часть дисплея остается неиспользованной, и что не все подходит для дисплея,Это основной код, выполняющий шоу:

public class Main extends Game {
    ...
    public void create() {
        ...         
        Gdx.graphics.setFullscreenMode(Gdx.graphics.getDisplayMode());

        //last
        this.setScreen(new MainMenu(this));
    }

    public void render() {
        super.render(); //important!
    }
    ...
}

А затем класс MainMenu

public class MainMenu implements Screen{
    ...

    public MainMenu(final Main game) {
        this.game = game;
        cam = new OrthographicCamera();
        cam.setToOrtho(false, 1920, 1080);

        ...
    }

    @Override
    public void render(float delta) {
        Gdx.gl.glClearColor(0.025f, .025f, 0.025f, 1);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
        cam.update();
        game.batch.setProjectionMatrix(cam.combined);

        ...

        if(Gdx.input.isKeyPressed(Keys.ESCAPE)) {
            Gdx.app.exit();
        }
    }

    ...
}

Как мне реализовать Viewport или что-то подобное, чтобы он выглядел одинаковона меньшем экране как на большем?Любая помощь очень ценится!Если вы хотите увидеть код, который я оставил для краткости, все это на моем GitHub .Еще раз спасибо!

1 Ответ

0 голосов
/ 22 мая 2018

Это не заняло у меня много времени, надеюсь, кто-то научится у меня, ха-ха.

Оказывается, когда вы используете камеру с фиксированной высотой и шириной, она заполняет весь монитор, но ширина камеры НЕ равна значению, возвращаемому Gdx.graphics.getWidth().Из-за этого весь мой код рендерился так, как будто он был сжат, потому что он ссылался на ширину, возвращаемую Gdx.graphics, а не camera.viewportWidth.

Извлеченный урок: Gdx.graphics.getWidth() может и будет меняться в зависимости от устройства и cam.veiwportWidth не будет.Oops!

...