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