2017-09-16 10 views
0

私がしたいことは、自分の世界の仮想サイズを持ち、アスペクト比を変更することなく画面上で世界を拡大することです.FitViewportは最良の候補のようです。ステージ上で私のビューポートをどのように初期化したかlibGDX - 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座標では大きすぎます)。また、私の俳優のためのタッチイベントもありません。

enter image description here

答えて

0

のように作成した後、ビューポートを更新しました、自分自身でそれを解決しました。 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. 
} 
0

私は私がしなければならなかったすべてはあなたがステージビューポートを更新する必要があり、このgetViewport().update(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());

関連する問題