首页 > 解决方案 > 为什么舞台上的相机不需要在libgdx中居中

问题描述

如果相机的(0,0)默认位于舞台的(0,0),舞台相机如何能够看到完整的舞台视图。如果没有调用视口的更新方法,也没有调用相机位置设置方法。

标签: libgdxgame-physicsphysicsgame-development

解决方案


如果您查看舞台构造函数:

public Stage (Viewport viewport, Batch batch) {
    if (viewport == null) throw new IllegalArgumentException("viewport cannot be null.");
    if (batch == null) throw new IllegalArgumentException("batch cannot be null.");
    this.viewport = viewport;
    this.batch = batch;

    root = new Group();
    root.setStage(this);

    viewport.update(Gdx.graphics.getWidth(), Gdx.graphics.getHeight(), true);
}

我们在最后一行 viewport.update() 中看到了宽度、高度和 true 作为参数。让我们看看这个 viewport.update() 方法:

public void update (int screenWidth, int screenHeight, boolean centerCamera) {
    apply(centerCamera);
}

现在让我们看看 apply() 方法。我们知道 centerCamera 是真的:

public void apply (boolean centerCamera) {
    HdpiUtils.glViewport(screenX, screenY, screenWidth, screenHeight);
    camera.viewportWidth = worldWidth;
    camera.viewportHeight = worldHeight;
    if (centerCamera) camera.position.set(worldWidth / 2, worldHeight / 2, 0);
    camera.update();
}

在这里我们找到了答案:if (centerCamera) camera.position.set(worldWidth / 2, worldHeight / 2, 0);

舞台以她自己的方式将摄像机位置居中。


推荐阅读