简体   繁体   中英

Libgdx lock aspect ratio to a certain range

Is it possible to set a minimum and maximum aspect ratio? Lets say from 1:1 to 2.5:1. Or at least set min and max for width and height?

You can use a FitViewport to maintain a fixed width and height:

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

If you are using a Stage to draw all your actors then all you need to do is set the viewport on the stage like this:

stage.setViewport(viewport);

However if you are not using a Stage then you need to do the following. If you are drawing directly with a SpriteBatch you will need to set up a Camera too:

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);

Then you will need to set up the projection matrix on the Camera and SpriteBatch when rendering:

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

    // do all the rendering of textures and stuff

}

Also you need to update the viewport every time the screen is resized:

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

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