2013-03-23 71 views
0

我正在嘗試用異構瓷磚實現平鋪遊戲;不同大小的瓷磚。 所有瓷磚的尺寸均爲圓形(以米爲單位)以使其更容易。 我正在尋找一種適合僞隨機順序的瓷磚算法,要求當然一切都必須平鋪。異構瓷磚和珀林噪音

下面是我寫的幾行,但它不能根據需要工作。不知怎麼的,瓷磚之間的間距不受尊重。

首先我生成一個perlin噪聲圖,它是在旅途中創建的。我爲我的瓷磚地圖使用了字典。

瓷磚的對象米變量是以米爲單位的方形瓷磚的寬度和深度。 瓷磚陣列中的第一個瓷磚是一個空的瓷磚,用於指定跳過。

編輯:我現在看到在Unity中有一個縮放問題,當我在遊戲中將一個1的比例應用到飛機上時,它會導致10的大小。有人可以提供解釋嗎?

for(int i=-viewSpreadMeters;i<=viewSpreadMeters;i++) 
     { 
      for(int j=-viewSpreadMeters;j<=viewSpreadMeters;j++) 
      { 
       int x = currentTerrainID[0] + i; 
       int y = currentTerrainID[1] + j; 

       if (!tileMap.ContainsKey(x, y)) { 
        int id = noiseMap[x, y]; 
        int iteratedTiles = 0; 
       Restart: 
        for (int k = 1; k < tiles[id].meters; k++) { 
         for (int l = 1; l < tiles[id].meters; l++) { 
          int x2 = x + k; 
          int y2 = y + l; 
          if (tileMap.ContainsKey(x2, y2)) { 
           int prevMeters; 
           do { 
            iteratedTiles++; 
            print ("Iterated tiles" + iteratedTiles); 
            if (iteratedTiles >= tiles.Length - 1) { 
             id = 0; 
             goto EndLoop; 
            } 
            prevMeters = tiles[id].meters; 
            id++; 
            id %= tiles.Length; 
            if (id == 0) id++; 
           } while(tiles[id].meters >= prevMeters);        
           goto Restart; 
          } 
         } 
        } 
       EndLoop: 
        tileMap.Add(x, y, id); 
        for (int k = 1; k < tiles[id].meters; k++) { 
         for (int l = 1; l < tiles[id].meters; l++) { 
          int x2 = x + k; 
          int y2 = y + l; 
          tileMap.Add(x2, y2, 0); 
         } 
        } 
       } 
      } 
     } 

回答

0

上述代碼存在缺陷,缺少繼續。另外,我需要塊來製作異構瓷磚。

0

擴展問題取決於您如何導入資產。如果瓷磚以編程方式創建,它們應該是1:1比例;但是如果您從像Max或Maya這樣的DCC工具導入它們,則需要檢查模型導入設置中的'glbal scale'設置 - 根據源應用程序和設置,全局比例可能會設置爲放大或從1:100到100:1的任何地方縮小導入的單位。

異構拼貼是棘手的,因爲您必須管理沿着部分邊緣的邊緣匹配。你確定你需要不同種類的尺寸嗎?

+0

縮放問題仍然存在。我正在使用Unity飛機;以1x1的比例將導致10x10的大小。然而,增加這個常數並不重要。 – RobotRock 2013-03-31 20:40:44

+1

如果您仍在嘗試使用異構拼貼大小,您可能需要查看Wang Tiles以瞭解它們如何使用邊緣編碼來匹配拼貼。只要其邊緣符合編碼方案,一個大於正常的圖塊就可以適用於這種方案.... http://procworld.blogspot.com/2013/01/introduction-to-wang-tiles。 HTML – theodox 2013-04-01 16:36:41