是否可以设置最小和最大纵横比? 比方说从 1:1 到 2.5:1。或者至少设置宽度和高度的最小值和最大值?
最佳答案
您可以使用 FitViewport 来保持固定的宽度和高度:
FitViewport 视口(viewport) = new FitViewport(SCREEN_WIDTH, SCREEN_HEIGHT, 相机);
如果您使用舞台
来绘制所有 Actor ,那么您所需要做的就是在舞台上设置视口(viewport),如下所示:
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);
然后渲染时需要在Camera
和SpriteBatch
上设置投影矩阵:
@Override
public void render(float deltaTime) {
camera.update();
batch.setProjectionMatrix(camera.combined);
// do all the rendering of textures and stuff
}
此外,每次调整屏幕大小时,您都需要更新视口(viewport):
@Override
public void resize(int width, int height) {
viewport.update(width, height);
}
关于java - Libgdx 锁定宽高比到一定范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36212369/