我想要做的是为我的世界设置一个虚拟尺寸,并在不改变宽高比的情况下尽可能地在屏幕上缩放世界,FitViewport似乎是最佳人选。多数民众赞成我如何在舞台上初始化我的视口。
public class PlayStage extends Stage{
public static final int WIDTH = 480;
public static final int HEIGHT = 800;
private final Vector2 gravity = new Vector2(0.f, -9.8f);
private World physWorld;
public PlayStage(){
super();
OrthographicCamera camera = new OrthographicCamera();
camera.setToOrtho(false, WIDTH, HEIGHT);
setViewport(new FitViewport(WIDTH, HEIGHT, camera));
physWorld = new World(gravity, false);
Gdx.input.setInputProcessor(this);
Ball ball = new Ball(physWorld);
setKeyboardFocus(ball);
addActor(ball);
}
@Override
public void draw() {
super.draw();
}
@Override
public void act(float delta) {
super.act(delta);
physWorld.step(delta, 10, 5);
}
@Override
public void dispose() {
super.dispose();
physWorld.dispose();
}}
这是精灵在渲染时的外观(在x坐标上缩放太多)。此外,我的演员也没有触及事件。
答案 0 :(得分:1)
您需要更新舞台视口。最好从resize方法调整视口大小。
@Override
public void resize(int width, int height) {
stage.getViewport().update(width,height);
//stage.getViewport().update(width,height,true); // -> If you want camera to be at centre.
}
答案 1 :(得分:0)
我自己解决了这个问题,我所要做的就是在创建后更新视口getViewport().update(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());