2016-04-05 30 views
0

這看起來像一個視口是無用的,但我可能會錯過一些東西。Libgdx視口

例如,我想製作一個遊戲,我有一個物體,如果我點擊屏幕的左側或右側,我就死!所以如果我使用Gdx.graphis.getWidth()和0,一切都會正常工作。 OK,但是讓我們設置viewport = new ExtendViewport(500,800,camera); 酷我沒有500和800的虛擬像素===> 5:8然後,我鍵入用於擊中結束屏幕的邏輯,所以如果object.x < 0或object.x> 800 ---->對象DIES !

但是現在我開始在具有1500 x 2000 ===> 3:4分辨率的平板電腦上進行遊戲,現在一切都錯了,整個屏幕都移動到了左側,所以0仍然有效,但是800是而不是屏幕右邊緣的結尾。

然後,我去使用FitViewport和現在左,右邊緣的碰撞,因爲不同的長寬比。

似乎我可以使用strechViewport,或只是手動編碼的東西......但我知道我錯過了一些東西,因爲它必須有它的用途。

將不勝感激任何幫助!

+0

從你想要做的事情來看,你認爲爲你的視口設置一個最大限制會幫助你嗎?看看api https://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/utils/viewport/ExtendViewport.html#ExtendViewport-float-float-float-float-,這可能會幫助你限制視口的大小 – Fish

+0

好吧,設置一些最大值?我甚至不能達到最大值......雖然現在我的遊戲不同了......我編程的PlayState,你用Gdx.graphics.getWidth和getHeight()來玩遊戲的方式,從菜單到其他所有東西選項和我用ViewPort做的事情,它似乎是唯一的解決方案 – pigi

回答

0

首先在我看來,將攝像頭置於(0,0)座標位置是個好習慣。然後,您將始終將-screenWidth/2作爲左側屏幕的邊緣位置,並將screenWidth/2作爲右側。

其次,在使用視口時,不應該直接使用屏幕座標。 Viewport有可能改變屏幕的視口的座標的方法:

unproject(Vector2 screenCoords) 

它也落後方法

project(Vector2 worldCoords) 

這些都會讓你能夠保持始終同類型的座標無論大顯示屏將如何。

+0

投影僅適用於觸摸事件或不適用?當寬高比發生變化時,我使用了ExtendViewport,因此我通過整個手機獲得了背景,但實際的PLAYABLE屏幕部分從左邊和屏幕的右邊移開......所以在邊緣處於 - 50和550而不是0和500,我可以通過aspect_ratio乘以所有東西,但是看起來使用ViewPort甚至是無用的。我在這裏錯過了什麼?你能檢查我的代碼,並告訴我我在這裏缺少什麼:http://pastebin.com/UY0BzBNp,SQUARE類只有一個精靈和hitbox – pigi