2017-09-16 7 views
0

Ce que je veux faire est d'avoir une taille virtuelle pour mon monde et de faire évoluer ce monde à l'écran autant que possible sans changer le rapport d'aspect, le FitViewport me semblait le meilleur candidat. C'est comme ça que j'ai intialisé ma vue sur la scène.libGDX - FitViewport ne se met pas bien à l'échelle

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(); 
}} 

Voici comment le sprite ressemble au moment du rendu (échelle trop sur la coordonnée x). De plus, je ne reçois aucun événement de toucher pour mes acteurs.

enter image description here

Répondre

0

Vous devez mettre à jour fenêtre de scène. Il est préférable de redimensionner votre viewport à partir de la méthode de redimensionnement.

@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

Je l'ai résolu moi-même, tout ce que je devais faire était de mettre à jour la fenêtre après la création comme celui-ci getViewport().update(Gdx.graphics.getWidth(), Gdx.graphics.getHeight());