我正在使用六角網格的TBS遊戲。不過,我想這是等距(看起來不錯,像素附庸風雅)和區塊引擎效果很好,這是結果: 在等距六角平鋪引擎中轉換屏幕到地圖座標?
然而,要實現這一點,我曾與值撥弄(平鋪尺寸,拼貼算法),以使拼貼正確。 以下是一個示例圖塊:
圖塊大小爲62x32,平鋪時,每個圖塊在x上移動47(cw),在y上移動16(ch)以正確放樣。
我這是怎麼計算的屏幕cordinates(用於繪製磚)從地圖座標:
function toScreen(x, y, z, offset)
{
offset = ifndef(offset, {x: 0, y: 0});
var ret = new Vector2D(y*Tile.cw + x*Tile.cw -offset.x, -x*Tile.ch + y*Tile.ch -offset.y -z*16);
ret.y += (Tile.height*this.h)/2; //center the map on screen
return ret;
}
現在,我需要能夠選擇地磚,並獲得地圖從屏幕座標(鼠標)座標。我不知道是否有可能以某種方式轉換座標(我所有的嘗試都失敗了)。
這是地圖座標系統是什麼樣子,瓷磚如何繪製:
瓷磚的選擇,當然會,必須是像素完美的,但只是平瓦(不需要選擇超過上面瓦片的樹),所以算法可以假設所有的瓦片都是平坦的(就像我給出的例子那樣)。有沒有人有任何想法如何做到這一點?我可以通過將[0,0]處的圖塊轉換爲屏幕空間並查看指針是否在其中,或者距離它有多遠,然後緩慢地逐塊走動,直到找到包含鼠標座標的平鋪(或沒有平鋪),但是我正在尋找更優雅的解決方案(如果存在的話)。
有沒有人有任何想法?
謝謝。
對於良好的結構化問題+1。 – Goles