我正在用Java編寫一個基於2D平鋪的遊戲,比如Bomberman(我的第一款遊戲)。如何在使用數組的2D瓦片遊戲中協調圖形和邏輯位置?
我使用二維數組來表示我跟蹤牆壁,可行走空間等的地圖。現在,我可以讓玩家平穩地交換精靈,取決於他按下的方向鍵(但不與其交互背景/地圖,它可以隨機走動並離開屏幕)。
我的問題是當我想要跟蹤玩家的數組中的位置。邏輯上,角色始終只屬於一個圖塊,但圖形上它可以位於兩個圖塊之間。我該如何解決這個問題?
我已經嘗試過這樣的:
currentTileArrayX = X/tileWidth;
currentTileArrayY = y/tileHeight;
其中,x和y是精靈的左上座標。 但是一切變得非常錯誤,因爲玩家的小精靈與小方塊大小不一樣。
我有另外一個選擇可以解決以前的問題:當玩家按下方向鍵時,將角色移動到下一個方塊,如動畫。這不會讓玩家在兩塊牌中間停下來......但是如果他用另一次按鍵打斷它呢?如何在動畫執行時停止用戶的操作?我認爲這是最簡單的解決方案,但我不知道如何實施它。
我已經嘗試在其他問題中找到解決方案,但我沒有運氣。我希望你能幫助我。
非常感謝。
Nupul我改變了我的代碼使用解決方案第一。感謝它,它解決了許多錯誤,我現在可以說它幾乎可行。但我還有一個問題:http://imageshack.us/f/687/bomberbug.png/ 我希望我在圖像中正確解釋它。 – Rama
在圖像中,currentPosition仍然是紅色的圖塊。由於紅瓦的右邊是免費的,我可以走到右邊,但是我不能。 – Rama
@Rama:你不明白你的意思......如果你可以向右走,那麼「爲什麼不呢?」其次,如果「圖形地」表明你不需要,那麼數據結構上也不應該被允許。您的內部模型必須準確地表達您的觀點。如果我不能在模型中正確使用,那麼我不應該被允許在視圖中這樣做,而不是反過來,因爲視圖是v.v.v.v的十進制。如果我沒有正確理解這個問題,你能否澄清一下這個問題? – PhD