我非常喜歡libgdx開發者,但是我在一段時間內遇到了一個問題,所以我決定在這裏問一下。libgdx使用視口的攝像頭位置
我使用FillViewport,TiledMap,Scene2d和OrtographicCamera。我想讓相機跟隨我的播放器實例,但是有界限(等於mapsize)。這意味着攝像機永遠不會離開地圖,所以當玩家到達地圖末端時,攝像機停止跟隨,並且他會轉到屏幕邊緣。也許聽起來很複雜,但很簡單,我相信你知道我的意思,它用在每一場比賽中。
我計算4個值:
minCameraX = camera.viewportWidth/2;
minCameraY = camera.viewportHeight/2;
maxCameraX = mapSize.x camera.viewportWidth/2;
maxCameraY = mapSize.y - camera.viewportHeight/2;
我除去不需要的東西一樣單位換算,camera.zoom等。然後我這樣設置攝像機的位置:
camera.position.set(Math.min(maxCameraX, Math.max(posX, minCameraX)), Math.min(maxCameraY, Math.max(posY, minCameraY)), 0);
(POSX,POSY是玩家位置),它基本上是將相機設置爲玩家位置,但是如果它高或低,則將其設置爲右軸之前定義的最大值或最小值。 (我也嘗試MathUtils.clamp(),它的工作原理是一樣的
一切都是完美的,直到現在當問題發生在高寬比變化時默認情況下,我使用1280x768,但我的手機有1280x720由於底部和頂部邊緣因爲我的地圖部分被切斷
我試圖修改最大值和最小值,計算比率的差異並將它們添加到計算中,更改相機大小,不同的視口和一些其他的東西,但沒有成功。
你們能幫忙嗎? 謝謝
究竟是什麼問題?您的相機邊界機制不再適用,或者是屏幕部分被切斷的問題? – noone
第二個。例如,頂部和底部邊緣被切掉,所以我沒有看到地圖結束幀。當然我知道這是FillViewport的工作方式,但它應該可以修改相機邊界來修復它 –
我不確定它是否在這種情況下,但你可以嘗試添加'getTopGutterHeight()'和'getBottomGutterHeight( )'給你的minCameraY和maxCameraY(或者換個方式,減去而不是添加?) – noone