gpt4 book ai didi

android - 在 libgdx android 中处理纵横比

转载 作者:行者123 更新时间:2023-11-29 00:21:33 25 4
gpt4 key购买 nike

我正在使用 libgdx 开发游戏,但我在不同设备上遇到了纵横比问题。
经过大量思考,我认为以下是解决问题的最佳方法:

我想让相机始终固定为 16:9 宽高比,并使用该相机绘制所有内容
例如,如果设备方面是 4:3,我只想显示 View 的一部分,而不是拉伸(stretch)它。

应该是这样的

aspect ratio

blue是虚拟屏幕(camera viewport),red是设备屏幕(4:3设备的可见区域)
例如,如果设备屏幕也是 16:9,则应显示完整 View 。

问题是我不知道如何实现这个。

最佳答案

我已经为纵向屏幕做了这个,在顶部和底部留下了一些空白。正如您在下图中看到的,游戏保持 4:3 的比例,并留下任何剩余的空白。

Portrait example of game keeping aspect ratio

内容始终居中,并通过不不均匀地拉伸(stretch)内容来保持其纵横比。所以这是我用来实现它的一些示例代码。

public static final float worldW = 3;
public static final float worldH = 4;
public static OrthographicCamera camera;

...

//CALCULATING THE SCREENSIZE
float tempCalc = Gdx.graphics.getHeight() * GdxGame.worldW / Gdx.graphics.getWidth();
if(tempCalc < GdxGame.worldH){
//Adjust width
camera.viewportHeight = GdxGame.worldH;
camera.viewportWidth = Gdx.graphics.getWidth() * GdxGame.worldH / Gdx.graphics.getHeight();

worldWDiff = camera.viewportWidth - GdxGame.worldW;
}else{
//Adjust Height
camera.viewportHeight = tempCalc;
camera.viewportWidth = GdxGame.worldW;

worldHDiff = camera.viewportHeight - GdxGame.worldH;
}
camera.position.set(camera.viewportWidth/2f - worldWDiff/2f, camera.viewportHeight/2f - worldHDiff/2f, 0f);
camera.zoom = 1f;
camera.update();

我确定我没有提出完美的解决方案,但您可以尝试使用有关如何计算相机位置和视口(viewport)的值,以便获得所需的效果。我想总比没有好。

另外,Clash Of The Olympians 开发者讨论了如何实现类似的东西,并且仍然让它在不同的设备上看起来不错(这真的很有趣,但没有代码):Our solution to handle multiple screen sizes in Android - Part one

关于android - 在 libgdx android 中处理纵横比,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22745034/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com