游戏精灵和多屏幕支持

时间:2012-01-11 21:04:01

标签: libgdx

我正在使用libgdx处理游戏,但刚刚发现我将如何针对各种屏幕尺寸实现它?我想出了如何定位不同尺寸和分辨率的图像,但我们如何让精灵支持不同的屏幕尺寸?我在320x480上的背景很好,但在480乘800的情况下占据一个非常小的位置,如何在所有屏幕上工作?

5 个答案:

答案 0 :(得分:5)

根据您的喜好,您有多种选择,

一个。您可以使用一组缩小的HQ精灵来适应每个屏幕,例如;

in resize()

width = arg0;
height = arg1;

然后在你的render()

batch.draw(textureRegion, -width/2, -height/2, width, height);

将在整个屏幕上绘制一个精灵(假设正交相机以0,0为中心)

湾您可以为不同的分辨率使用不同的精灵集合,然后根据视口的尺寸加载一组精灵。

答案 1 :(得分:3)

你可以使用scene2d。 在那里,您可以通知现场,窗口已在应用程序中调整大小

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

答案 2 :(得分:0)

请看一下这个链接:How to deal with different aspect ratios in libGDX?

应该回答你的问题。我已经实现了它,它对我很有用。

答案 3 :(得分:0)

将屏幕划分为虚拟单位,例如网格10x10。 根据实际屏幕尺寸计算虚拟单位。

VIRTUAL_UNIT_WIDTH = Gdx.graphics.getWidth()/10;
VIRTUAL_UNIT_HEIGHT = Gdx.graphics.getHeight()/10;

通过这些虚拟单位设置精灵大小,并在调用spriteBatch.draw()时使用虚拟单位;

像这样,您可以通过各种屏幕分辨率保持相同的游戏宽高比。

希望这能给你一个想法。

答案 4 :(得分: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屏幕的位置。