libGDX - FitViewport 正在拉伸舞台
libGDX - FitViewport is stretching the stage
我正在创建一个游戏,我不希望在调整 window 大小时我的屏幕被拉伸(当然前提是它可以适应 window)。我正在使用带有 FitViewport
的 Stage
对象,但是当我调整 window 大小时,它上面的元素也会被调整大小。我做错了什么?
这是我的屏幕class:
public class SplashScreen implements Screen{
private final PuzzleGame app;
private Stage stage;
private Image splashImage;
public SplashScreen(final PuzzleGame app) {
this.app = app;
this.stage = new Stage(new FitViewport(PuzzleGame.V_WIDTH, PuzzleGame.V_HEIGHT, app.camera));
Gdx.input.setInputProcessor(stage);
Texture splashTex = new Texture(Gdx.files.internal("img/splash.png"));
splashImage = new Image(splashTex);
splashImage.setPosition(stage.getWidth() / 2, stage.getHeight() / 2);
stage.addActor(splashImage);
}
@Override
public void show() {
}
@Override
public void render(float delta) {
Gdx.gl.glClearColor(.25f, .25f, .25f, 1f);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
update(delta);
stage.draw();
}
private void update(float delta) {
stage.act(delta);
}
@Override
public void resize(int width, int height) {
stage.getViewport().update(width, height, false);
}
@Override
public void pause() {
}
@Override
public void resume() {
}
@Override
public void hide() {
}
@Override
public void dispose() {
stage.dispose();
}
}
正如 Tenfour04 已经指出的,您正在寻找 ScreenViewport
。
您可能想查看 this question and then re-read the Viewports wiki article。
基本上,有两种不同的视口,Camera 和 OpenGL 视口。
FitViewport
保持相机视口不变,但放大或缩小 OpenGL 视口。结果将是所有尺寸看起来更大或更小,具体取决于与相机视口相比,OpenGL 视口的大小。
ScreenViewport
另一方面,保持相机视口和 OpenGL 视口大小相同,这将导致元素始终具有相同大小。
我正在创建一个游戏,我不希望在调整 window 大小时我的屏幕被拉伸(当然前提是它可以适应 window)。我正在使用带有 FitViewport
的 Stage
对象,但是当我调整 window 大小时,它上面的元素也会被调整大小。我做错了什么?
这是我的屏幕class:
public class SplashScreen implements Screen{
private final PuzzleGame app;
private Stage stage;
private Image splashImage;
public SplashScreen(final PuzzleGame app) {
this.app = app;
this.stage = new Stage(new FitViewport(PuzzleGame.V_WIDTH, PuzzleGame.V_HEIGHT, app.camera));
Gdx.input.setInputProcessor(stage);
Texture splashTex = new Texture(Gdx.files.internal("img/splash.png"));
splashImage = new Image(splashTex);
splashImage.setPosition(stage.getWidth() / 2, stage.getHeight() / 2);
stage.addActor(splashImage);
}
@Override
public void show() {
}
@Override
public void render(float delta) {
Gdx.gl.glClearColor(.25f, .25f, .25f, 1f);
Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
update(delta);
stage.draw();
}
private void update(float delta) {
stage.act(delta);
}
@Override
public void resize(int width, int height) {
stage.getViewport().update(width, height, false);
}
@Override
public void pause() {
}
@Override
public void resume() {
}
@Override
public void hide() {
}
@Override
public void dispose() {
stage.dispose();
}
}
正如 Tenfour04 已经指出的,您正在寻找 ScreenViewport
。
您可能想查看 this question and then re-read the Viewports wiki article。
基本上,有两种不同的视口,Camera 和 OpenGL 视口。
FitViewport
保持相机视口不变,但放大或缩小 OpenGL 视口。结果将是所有尺寸看起来更大或更小,具体取决于与相机视口相比,OpenGL 视口的大小。
ScreenViewport
另一方面,保持相机视口和 OpenGL 视口大小相同,这将导致元素始终具有相同大小。