LibGDX ScalingViewport没有改变位置

时间:2017-05-12 17:06:31

标签: java android libgdx

我正在尝试开发一个Android应用程序,我偶然发现了一个非常讨厌的问题。

我正在尝试使用我的“主”视频中的不同视口来控制某些元素。我已经开始使用Scaling视口与Scaling.none,因为它似乎最适合我正在寻找的东西。问题是,当我试图改变它的位置时,它根本就不动了!它只是停留在屏幕的中央。以下是我在视口的构造函数中使用的代码:

viewport = new StretchViewport(720, 1280, cam);
viewport.apply();
cam.position.set(cam.viewportWidth / 2, cam.viewportHeight / 2,0);

secondaryViewport = new ScalingViewport(Scaling.none, 480, 421);
secondaryViewport.setScreenPosition(240, 0);

无法移动缩放视口吗?

编辑:这是我的render()方法:

@Override
public void render(SpriteBatch sb) {
    cam.update();
    secondaryViewport.getCamera().update();
    sb.setProjectionMatrix(cam.combined);
    Gdx.gl.glViewport(0, 0, Gdx.graphics.getWidth(), Gdx.graphics.getHeight());
    sb.begin();
    sb.setColor(Color.WHITE);
    sb.draw(bg, cam.position.x - cam.viewportWidth / 2, 0, cam.viewportWidth, cam.viewportHeight);
    sb.end();
    stage.getViewport().apply();
    stage.draw();
    stage.act();
    secondaryStage.getViewport().apply();
    secondaryStage.draw();
    secondaryStage.act();

}

2 个答案:

答案 0 :(得分:0)

默认情况下,Viewport的相机位置位于0,0,0

使用此secondaryViewport.getCamera().position.set(100,100,0);更改secondaryViewport的位置。

secondaryViewport = new ScalingViewport(Scaling.none, 480, 421);

通过此声明,您创建的新CameraStretchViewport中使用的相机不同。

答案 1 :(得分:0)

好的,解决方案是

secondaryStage.getViewport().setScreenPosition(x, y);