我正在尝试开发一个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();
}
答案 0 :(得分:0)
默认情况下,Viewport
的相机位置位于0,0,0
使用此secondaryViewport.getCamera().position.set(100,100,0);
更改secondaryViewport的位置。
secondaryViewport = new ScalingViewport(Scaling.none, 480, 421);
通过此声明,您创建的新Camera
与StretchViewport
中使用的相机不同。
答案 1 :(得分:0)
好的,解决方案是
secondaryStage.getViewport().setScreenPosition(x, y);