0

我正在製作一個使用libgdx的android遊戲,我希望遊戲在不同屏幕上的智能手機上看起來不錯(具有相同的比例),但不是成就。在設備中,圖片看起來很正常,而另一個非常小。保持libGDX中的長寬比

我使用了視口和OrthographicCamera,但我沒有看到好的結果。也許我做錯了什麼。

目前我有這樣的代碼(節選):

public class PlayScreen extends BaseScreen { 

    private Stage stage; 
    private FaceActor faceActor64; 
    private Texture faceTexture64; 

    private int sw; 
    private int sh; 

    public PlayScreen(MainGame game) { 
     super(game); 
     faceTexture64 = new Texture("images/all64.png"); 
    } 

    @Override 
    public void show() { 
     sw = Gdx.app.getGraphics().getWidth(); 
     sh = Gdx.app.getGraphics().getHeight(); 

     stage = new Stage(new FitViewport(sw, sh)); 

     faceActor64 = new FaceActor(faceTexture64); 
     faceActor64.setBounds(150, 150, 64, 64); 
     stage.addActor(faceActor64); 

     Gdx.input.setInputProcessor(stage); 

    } 

    @Override 
    public void render(float delta) { 
     Gdx.gl.glClearColor(0,0,0,1); 
     Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT); 

     stage.act(delta); 
     stage.draw(); 
    } 

    @Override 
    public void resize(int width, int height) { 
     stage.getViewport().update(width, height, true); 
    } 

    @Override 
    public void hide() { 
     stage.dispose(); 
    } 

    @Override 
    public void dispose() { 
     faceTexture64.dispose(); 
    } 
} 

我使用64像素的圖像。

Result in a smartphone of 480x800.

Result in a smartphone of 1080x1920.

不知道如何解決它?

回答

1

你在做什麼有這樣的:

對於720x1280設備遊戲世界觀要設置到720x1280併爲1080x1920設備,您將它設置爲1080x1920。您的資產很可能不會發生變化,因此設備擁有的像素越多,您的遊戲世界就會顯示得越多。我總是告訴人們忘記像素,除非他們想要像素完美的遊戲,並且這是您如果不調整資產大小(像素完美的遊戲世界)而創建的。

如果你仔細想想,你的遊戲甚至不需要知道設備。它只需要知道你的遊戲世界有多少在FitViewport中渲染。所以我們說我有一個平鋪遊戲,我的瓷磚尺寸爲1x1單位。如果我想垂直顯示16個瓷磚,並且水平顯示9個瓷磚,則會將我的FitViewport設置爲new FitViewport(9, 16)。這會填滿大多數設備上的屏幕,因爲它們的縱橫比通常爲16:9

+0

非常感謝你真的! 我解決了;) –

0

簡單的解釋是,只傳遞常量到視口構造函數中,而不是實際的屏幕尺寸。選擇要使用的尺寸,並且視口將拉伸它們以適應實際屏幕。此外,如果您不想黑條(「letterboxing/pillarboxing」),請使用ExtendViewport而不是FitViewport。

+0

感謝您的回答:) –

+0

但是'ExtendViewport'「擴展了」具有不同寬高比的設備上的遊戲世界。是的,您可以擺脫黑條,但是在您需要的每個設備上都可以獲得完全相同的遊戲體驗,即「FitViewport」。 – Madmenyo

+0

@MennoGouw你知道任何有黑條的成功遊戲嗎?我認爲當用戶看到一款遊戲沒有充分利用昂貴手機上的漂亮大屏幕時,用戶非常惱火。有很多方法可以讓遊戲具有類似的體驗。在側卷軸上,移動相機,以便在所有設備上的角色前面有相同數量的遊戲世界距離。在大多數其他遊戲中,只需在額外空間中畫出額外的風景即可。 – Tenfour04