Libgdx-分割屏幕并且无法更改视口的位置

问题描述 投票:0回答:1

我已经决定在Libgdx库中创建一个简单的游戏,但是过了一会儿我遇到了问题。

问题在于将游戏玩法呈现在屏幕上的固定位置。我想将屏幕分为以下几个部分:

  • 需要大约70%屏幕空间的游戏,
  • 字符设备,
  • 聊天

但是我仍然无法设置视口的位置。让我们说说我如何理解视口和摄影机概念。如果我错了,请改变主意。

相机决定当前应该看世界的哪一部分。例如,我有一幅尺寸为500x500px的图像,如果世界的尺寸固定为200x200px,那么我只能看到图像的200x200px部分。

视口是负责翻译固定“窗口”的摄像机视图的东西。例如,如果当前相机显示200x200px的部分,则视口可以缩放到固定大小(例如全屏)。

如果我正确理解了这些概念,我正在尝试将游戏视口的大小设置为屏幕宽度和高度的70%,并且可以正常工作。因此,我的世界超过了给定的大小。当我想通过使用ViewPort.setScreenPosition方法将游戏视口移到左上角时,问题就开始了。调用功能不会影响游戏视图的位置。

下面是我的原型代码。

public class MyGdxGame extends ApplicationAdapter {
    private static final int WORLD_WIDTH = 250;
    private static final int WORLD_HEIGHT = 250;
    private SpriteBatch spriteBatch;
    private Texture texture;
    private OrthographicCamera gameplayCamera;
    private Viewport gameplayViewPort;

    @Override
    public void create() {
        spriteBatch = new SpriteBatch();
        texture = new Texture("life.png");

        gameplayCamera = new OrthographicCamera();
        gameplayCamera.translate(gameplayCamera.viewportWidth / 2.0f, gameplayCamera.viewportHeight / 2.0f);

        gameplayViewPort = new ExtendViewport(WORLD_WIDTH, WORLD_HEIGHT, gameplayCamera);
        gameplayViewPort.setScreenPosition(0, Gdx.graphics.getHeight() / 4);
        gameplayViewPort.apply();

        gameplayCamera.position.set(WORLD_WIDTH / 2.0f, WORLD_HEIGHT / 2.0f, 0);
    }


    @Override
    public void render() {
        Gdx.gl.glClearColor(1, 0, 0, 1);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);

        gameplayCamera.update();
        spriteBatch.setProjectionMatrix(gameplayCamera.combined);

        spriteBatch.begin();
        spriteBatch.draw(texture, 0, 0);
        spriteBatch.end();
    }

    @Override
    public void resize(int width, int height) {
        gameplayViewPort.update(width * 3 / 4, height * 3 / 4);
        gameplayCamera.position.set(width / 2.0f, height / 2.0f, 0);
    }

    @Override
    public void dispose() {
        texture.dispose();
    }
}

我希望您知道我的问题有任何适当的解决方案,也许它根本与操纵视口无关。 ;)

Expected effect

split camera libgdx screen viewport
1个回答
0
投票

我已经遍历了libgdx的文档,找到了关于乘法视口的部分。https://github.com/libgdx/libgdx/wiki/Viewports

添加行后

viewport.apply().

在渲染方法中而不是创建方法中,一切都开始正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.