我有一個生成2D遊戲地圖圖塊塊的系統。塊是16x16的瓷磚,瓷磚是25x25。將2D遊戲世界座標到屏幕上的位置
塊被給出自己的座標,如0,0,0,1等。瓷磚根據它們在哪個塊中確定其世界座標。我已驗證塊/瓷塊是全部顯示適當的x/y座標。
我的問題是這些翻譯爲屏幕座標。前一個問題有人推薦使用:
(worldX * tileWidth) % viewport_width
每瓦的X/Y通過這種計算運行和屏幕的x/y座標返回。
這適用於符合視口內的瓷磚,但它對於任何關閉屏幕重置屏幕的x/y位置計算。
在我的地圖,我加載瓷磚塊半徑內周圍的球員,所以一些內部的瓷磚將關閉屏幕(直到他們走動時,屏幕上的瓷磚位置移動)。
我試圖與瓦片的測試,這將是關閉屏幕:
Tile's x coord: 41
41 * 25 = 1025
Game window: 1024
1025 % 1024 = 1
這意味着瓦片X(其中,如果屏幕是0,0在圖0,0,應爲X: 1025,就在屏幕的右手側)實際上爲x:1,出現在左上角。
我想不出如何正確處理這個問題 - 在我看來,我需要採取tileX * tileWidth
來確定它是「初始屏幕位置」,然後以某種方式使用偏移量來確定如何使其出現在屏幕上。但是抵消了什麼?
更新:我已經存儲了一個X/Y偏移值的球員動作的時候,所以我知道如何移動地圖。我可以使用這些值作爲當前偏移量,如果有人保存了遊戲,我可以簡單地存儲這些值並重新使用它們。沒有必要的方程式,我只需要存儲累積偏移量。
您的解決方案對我來說沒有什麼意義:如果它在屏幕外,讓它在屏幕上畫出來,如果它在屏幕上,那麼你已經證明不會做任何模操作?如果worldX * tileWidth不是> screenWidth,則worldX * tileWidth%screenWidth == worldX * tileWidth。這三元是毫無意義的,因爲無論哪條路徑,你都會得到worldX * tileWidth。 – Adrian
這是真的,但如果你向下滾動兩行,你會看到替代解決方案,但他的問題並沒有真正回答他的觀點是以玩家爲中心還是以地圖爲中心,所以我提供了兩種選擇。 – arynaq