2013-12-08 43 views
0

我有一個2D瓦片地圖,每個地塊都由2×2個單元組成。我可以引用塊本身並獲取塊中每個特定單元的索引。但是,我想還要將該塊中的第一個tile的索引存儲,該塊不會自動生成。如何計算tilemap塊的主索引?

enter image description here

例如,點擊突出顯示的塊總是產生「0」,點擊下一個將產生「2」,並點擊其下的一個總是產生「20」。紅色數字表示瓷磚/單元格的索引。黃色的輪廓顯示了一個實際的塊。

在塊的範圍內,得到0,2,4,6,8,20等的最佳方法是什麼? 生成此代碼在ActionScript 3中,是一個基本的雙循環。

編輯:

我思考了一會兒,並決定在我的索引搜索代碼添加。我不完全確定這是否會有所幫助,尤其是因爲它用於查找單個單元格索引而不是大塊中的特定索引位置。

 public function mousePosistion():Number 
    { 
     var mouseColX: Number = 0; 
     var mouseColY: Number = 0; 

     mouseColY = Math.ceil(this.mouseY/64); 
     mouseColX = Math.ceil(this.mouseX/64); 

     var mouseIndex:Number = mouseColX + (20 * mouseColY); 

     return mouseIndex; 
    } 

注意:它被格式化爲寬度爲20的實際地圖,而不是如示例中的10。

回答

0

關閉我的頭頂,只要看一眼的圖像,你有,你可以去:

[in pseudocode] 
if tileIndex tens digit is odd, minus 10 
if tileIndex ones digit is odd, minus 1 
0

我想通了一點時間之後。使用雙For循環,索引計算出現在這裏:baseIndex =(X * 2)+(Y * 20);完美匹配基本瓷磚上的每個索引。 2是超級的大小,20是地圖的寬度加倍。將此擴展爲基於變量的解決方案:

baseIndex = (X * chunkSize) + (Y * (mapSize * 2));