我正在使用 libgdx 来开发游戏,但刚刚发现我将如何为各种屏幕尺寸实现它?我想出了如何定位不同尺寸和分辨率的图像,但我们如何让精灵支持不同的屏幕尺寸?我在 320x480 上的背景很好,但在 480 x 800 上占据了很小的位置,如何实现它在所有屏幕上的工作?
问问题
4387 次
4 回答
5
你有多种选择,取决于你喜欢做什么,
一个。您可以使用一组按比例缩小的 HQ 精灵以适合每个屏幕,例如;
在调整大小()
width = arg0;
height = arg1;
然后在你的 render()
batch.draw(textureRegion, -width/2, -height/2, width, height);
将在整个屏幕上绘制一个精灵(假设正交相机以 0,0 为中心)
湾。您可以为不同的分辨率使用不同的精灵集,然后根据视口的尺寸加载一组精灵。
于 2012-01-13T03:46:58.980 回答
3
你可以使用scene2d。在那里你可以通知场景,窗口在应用程序中调整大小
@Override
public void resize(int width, int height) {
stage.setViewport(width, height, true);
...
}
于 2013-01-15T18:32:21.747 回答
0
将您的屏幕划分为虚拟单位,例如网格 10x10。根据实际屏幕尺寸计算您的虚拟单位。
VIRTUAL_UNIT_WIDTH = Gdx.graphics.getWidth()/10;
VIRTUAL_UNIT_HEIGHT = Gdx.graphics.getHeight()/10;
并通过这些虚拟单位设置您的精灵大小,并在调用 spriteBatch.draw(); 时使用虚拟单位;
像这样,您将能够通过各种屏幕分辨率保持游戏的相同纵横比。
希望这能给你一个想法。
于 2014-07-18T21:36:18.670 回答
0
我正在使用下面的方法,它适用于几乎所有具有轻微缩放问题的屏幕尺寸。
我总是使用屏幕尺寸为 1920.0x1080.0 的图形图像
ScreenViewport screenViewport=new ScreenViewport(camera);
screenViewport.setUnitsPerPixel(Math.min(1920.0f/Gdx.graphics.getWidth(),1080.0f/Gdx.graphics.getHeight()));
stage = new Stage(screenViewport);
@Override
public void resize (int width, int height) {
ScreenViewport screenViewport= (ScreenViewport) stage.getViewport();
screenViewport.setUnitsPerPixel(Math.min(1920.0f/width,1080.0f/height));
screenViewport.update(width,height,false);
}
在这里,您可以从 Math.min() 或 Math.max() 设置您的方法。
这将导致您的相机视口大小接近 1920.0*1080.0
Device screen-size Math.max() Math.max()
800.0x480.0 1800.0x1080.0 1920.0x1152.0
1920.0x1080.0 1920.0x1080.0 1920.0x1080.0
2048.0x1440.0 1536.0x1080.0 1920.0x1350.0
注意:始终使用 camera.viewportWidth 和 camera.viewportHeight 设置游戏 UI 屏幕的位置。
于 2017-07-19T07:33:45.310 回答