2012-01-11 234 views
3

我正在使用libgdx在遊戲上工作,但剛剛碰到,我將如何實現它的各種屏幕尺寸?我想出瞭如何定位不同尺寸和分辨率的圖像,但我們如何讓精靈支持不同的屏幕尺寸?我在320x480上的背景沒有問題,但是在480×800上需要佔用很小的空間,如何在所有屏幕上都能實現這一點?遊戲精靈和多屏幕支持

回答

5

你有各種選擇取決於你很高興做什麼,

a。你可以使用一組縮小的HQ精靈來適應每個屏幕,

在調整大小()

width = arg0; 
height = arg1; 

然後在渲染()

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

將繪製一個精靈在整個屏幕上(假設0,0中心正交相機)

灣你可以對不同的分辨率使用不同的精靈集合,然後根據視口的尺寸加載一組精靈。

3

您可以使用scene2d。 在那裏,你可以通知現場,該窗口中的應用

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

把你的屏幕變成虛單位,例如電網10×10。 從實際屏幕尺寸計算您的虛擬單位。

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

並通過這些虛擬單位設置您的精靈大小,並在調用spriteBatch.draw()時使用虛擬單位;

像這樣,您將能夠通過各種屏幕分辨率保持遊戲的縱橫比。

希望這給你一個想法。

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界面的設定位置。