【问题标题】:LibGDX ScalingViewport not changing positionLibGDX ScalingViewport 不改变位置
【发布时间】:2017-05-12 17:06:30
【问题描述】:

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

我正在尝试使用与我的“主要”视口不同的视口用于不同的阶段来控制某些元素。我已经开始使用带有 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();

}

【问题讨论】:

    标签: java android libgdx


    【解决方案1】:

    默认Viewport的摄像头位置在0,0,0

    使用这个secondaryViewport.getCamera().position.set(100,100,0); 来改变secondaryViewport 的位置。

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

    通过此语句,您正在创建一个新的Camera,它与您的StretchViewport 中使用的相机不同。

    【讨论】:

    • 你是如何使用另一个视口的?
    • 你想让我把我的 render() 方法中的代码粘贴到这里吗?
    • 好的,我加了!
    • 你的secondaryStagesecondaryViewport 你是如何创建secondaryStage 的吗?
    • 我也尝试过使用 FitViewport,但仍然无法移动它
    【解决方案2】:

    好的,解决办法是

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-12-16
      • 1970-01-01
      • 1970-01-01
      • 2019-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多