我目前正在使用正視相機。在我進入遊戲之前,我想先修正屏幕大小。目前,我的屏幕尺寸已設置爲800 x 480.這樣可以在其他設備和屏幕尺寸上正常工作嗎?現在我所擁有的就是一個閃屏和遊戲畫面。我需要添加哪些代碼才能實現這一點。LibGDX - 如何讓我的遊戲在所有屏幕分辨率上都能正常工作?
回答
在相機上擁有一個靜態寬度是完全可以的,因爲它爲您的遊戲提供了一個可以可靠工作的固定維度。這是有效的,因爲相機被用來定義世界座標,而這些世界座標並不總是與屏幕座標一一對應。
您的問題來自固定的相機高度。根據設備屏幕的高寬比,固定高度會導致屏幕拉長或縮短。如果您想考慮不同的長寬比,則需要將顯示比例乘以相機高度(當前爲480)。您可以通過將高度除以寬度除以高度來獲得屏幕比例。這看起來是這樣的:
float width = Gdx.graphics.getWidth();
float height = Gdx.graphics.getHeight();
OrthographicCamera camera = new OrthographicCamera(800, 480 * (height/width));
正如BennX在評論中指出,LibGDX推出視窗,讓你做很多同樣的事情上面,只是以不同的方式。爲了達到與上面概述的效果相同的效果,只需使用視口,就可以使用ExtendViewport
。它所做的就是將世界的大小保持在一個方向,同時向另一個方向延伸。因此,世界將首先放大以填滿屏幕,然後在保持縱橫比的同時擴大較短的尺寸。要創建這種類型的視口,它會是這個樣子:
OrthographicCamera camera = new OrthographicCamera(800, 480);
ExtendViewport viewport = new ExtendViewport(800, 480, camera);
視口上面會有800的最小寬度和480這些值的一個最低高度將是視後的相同被應用,另一個將根據屏幕的高寬比而改變。更窄的屏幕將具有更多的垂直空間,而更寬的屏幕將具有更多的水平空間。有關視口的更多信息,請訪問LibGDX wiki頁面here。
我不認爲它是一個很好的解決方案。 Libgdx特別爲這個問題實現了Viewports,就像4個月前那樣做了所有的事情。 https://github.com/libgdx/libgdx/wiki/Viewports – BennX 2014-09-01 12:35:13
@BennX感謝您的領導。我仍然使用稍微老一點的引擎,它沒有視口,所以我不知道這個解決方案。我已經更新了答案以反映這兩種解決方案。 – MCeley 2014-09-01 15:48:13
@Mceley我需要將這行代碼應用到我的應用程序的每個屏幕上嗎? – Dakota 2014-09-02 01:22:31
我正在使用下面的方法,它幾乎適用於所有屏幕大小與輕微縮放問題。
我總是使用圖形圖像屏幕尺寸1920.0x1080.0
ScreenViewport screenViewport=new ScreenViewport(camera);
screenViewport.setUnitsPerPixel(Math.min(1920.0f/Gdx.graphics.getWidth(),1080.0f/Gdx.graphics.getHeight()));
在這裏,你可以從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界面的設定位置。
- 1. 如何讓我的Android遊戲適合所有屏幕分辨率?
- 2. 如何讓我的800 * 600遊戲適合所有屏幕分辨率?
- 3. 我如何讓我的CSS工作的屏幕分辨率?
- 4. Win 8 MonoGame - 遊戲分辨率與屏幕分辨率對比
- 5. 如何在所有屏幕分辨率
- 6. Android上用於libgdx遊戲的全屏分辨率
- 7. 屏幕分辨率無法與我的CSS正常工作
- 8. 在所有屏幕分辨率的2D遊戲固定相機的左側
- 9. Android libgdx大屏幕分辨率
- 10. 遊戲開發:如何讓我的spritegame動態分辨率?
- 11. 如何使我的網站適合所有屏幕分辨率
- 12. 在所有屏幕尺寸上工作的Android遊戲
- 13. 屏幕分辨率。全屏 - 完美。正常屏幕 - 不完美
- 14. 所有分辨率屏幕@media
- 15. Libgdx Android遊戲分割屏幕
- 16. 如何讓我的遊戲在屏幕上停留在屏幕上
- 17. CSS3屏幕分辨率不工作
- 18. 我如何在Android遊戲中使用特定尺寸的圖像到所有屏幕分辨率?
- 19. 屏幕分辨率
- 20. 屏幕分辨率
- 21. 屏幕分辨率
- 22. 屏幕分辨率
- 23. 屏幕分辨率
- 24. 屏幕分辨率
- 25. 最佳屏幕分辨率測試Android遊戲
- 26. 如何讓我的標題圖片對所有屏幕分辨率尺寸都有響應?
- 27. 如何根據屏幕分辨率縮放libgdx中的精靈?
- 28. e.pageX在所有分辨率下工作不正常
- 29. Iphone 5遊戲分辨率
- 30. 如何使遊戲響應所有移動分辨率
使用像本機avd或genymotion這樣的模擬器來跨多個陣列進行測試。沒有做過多的libgdx工作,但這就是我通常測試解決方案的方式。 – zgc7009 2014-08-31 01:26:19
看看關於視口的libgdx的維基。我想你會找到更好的解決方案! https://github.com/libgdx/libgdx/wiki/Viewports – BennX 2014-09-01 12:32:39