【问题标题】:Libgdx lock aspect ratio to a certain rangeLibgdx 将纵横比锁定在一定范围内
【发布时间】:2016-07-12 18:18:10
【问题描述】:

是否可以设置最小和最大纵横比? 让我们说从 1:1 到 2.5:1。或者至少设置宽度和高度的最小值和最大值?

【问题讨论】:

  • 你能测试我的解决方案吗?

标签: java libgdx window aspect-ratio


【解决方案1】:

您可以使用 FitViewport 来保持固定的宽度和高度:

FitViewport viewport = new FitViewport(SCREEN_WIDTH, SCREEN_HEIGHT, camera);

如果您使用Stage 来绘制所有演员,那么您只需在舞台上设置视口,如下所示:

stage.setViewport(viewport);

但是,如果您不使用舞台,则需要执行以下操作。如果您直接使用SpriteBatch 绘图,您还需要设置Camera

SpriteBatch batch = new SpriteBatch();
OrthographicCamera camera = new OrthographicCamera(SCREEN_WIDTH, SCREEN_HEIGHT);
camera.setToOrtho(true);
//center the camera in the center of the screen
camera.position.set(SCREEN_WIDTH / 2f, SCREEN_HEIGHT / 2f, 0f);
//pass the camera to the third argument of the viewport
FitViewport viewport = new FitViewport(SCREEN_WIDTH, SCREEN_HEIGHT, camera);

那么你需要在渲染时在CameraSpriteBatch上设置投影矩阵:

@Override
public void render(float deltaTime) {
    camera.update();
    batch.setProjectionMatrix(camera.combined);

    // do all the rendering of textures and stuff

}

此外,每次调整屏幕大小时,您都需要更新视口:

@Override
public void resize(int width, int height) {
    viewport.update(width, height);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-06
    • 1970-01-01
    • 2016-10-06
    • 2012-04-09
    • 2011-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多