2014-12-12 4 views
1

올바른 가로 세로 비율을 사용하여 게임을 시작하면 창의 크기를 조정할 때 게임의 크기가 매우 잘 맞지만 다른 가로 세로 비율을 사용하여 응용 프로그램을 시작할 때 게임이 잘못되었습니다. 화면 클래스에서 Fitviewport가 제대로 작동하지 않습니다

public static final int VirtualWidth = 720; 
public static final int VirtualHeight = 1280; 

내가 fitviewport를 사용합니다 :

나는 주요 게임 클래스에서 설정이 전역있다.

private Stage gameStage; 
private OrthographicCamera camera; 
private SpriteBatch batch; 

private Viewport vp = new FitViewport(Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); 

public GameScreen() 
{ 
    batch = new SpriteBatch(); 
    camera = new OrthographicCamera(ShufflePuzzle.VirtualWidth, ShufflePuzzle.VirtualHeight); 
    camera.setToOrtho(false, ShufflePuzzle.VirtualWidth, ShufflePuzzle.VirtualHeight); 

    FitViewport vp = new FitViewport(Gdx.graphics.getWidth(), Gdx.graphics.getHeight(), camera); 
    vp.update(Gdx.graphics.getWidth(), Gdx.graphics.getHeight()); 

    gameStage = new Stage(vp, batch); 

    Gdx.input.setInputProcessor(gameStage); 
} 

@Override 
public void render(float delta) { 
    Gdx.gl.glClearColor(.2f, .2f, .3f, 1); 
    Gdx.gl.glClear(GL30.GL_COLOR_BUFFER_BIT); 

    gameStage.act(); 
    gameStage.draw(); 

} 

@Override 
public void resize(int width, int height) { 
    vp.update(width,height); 
    gameStage.getViewport().update(width,height, false); 
} 

지금까지 내가 카메라의 실제 크기와 뷰포트를 가상 값으로 설정해야한다는 것을 알고 있습니다. 나는 정확히 같은 결과로 이것을 바꾸려고 노력했다. 다음은 내 데스크탑 구성입니다.

//The size i made my game for, here everything works like a charm. 
    // If i resize my viewport manually to 1024x768 the screen gets fitted like it should. 
    config.width=720/2; 
    config.height=1280/2; 

    //When I use below config my stage will not fit the screen. 
    config.width = 1024 * 2; 
    config.height = 768 * 2; 

답변

1

카메라가 아닌 뷰포트를 인스턴스화 할 때 가상 크기를 사용해야합니다. 카메라 값은 무시되고 뷰포트에 의해 겹쳐 쓰여집니다.

camera = new OrthographicCamera(); 
FitViewport vp = 
    new FitViewport(ShufflePuzzle.VirtualWidth, ShufflePuzzle.VirtualHeight, camera); 

는 또한, 생성자의 vp 참조 멤버 vp을 숨기고, 그래서 어느 것이 어느 분명하지 않다 :

그래서이 작업을 수행. 같은 매개 변수로 두 개의 개별 뷰포트가 필요한 이유를 생각할 수 없습니다. 그러나 멤버 변수 인 멤버 변수는 윈도우의 실제 크기가 아닌 가상 크기로 인스턴스화되어야합니다 (이 클래스의 생성자 외부에서 인스턴스화하는 경우 인스턴스화 시간에 0이 될 수 있음).