Godot 中使用 地形 (Terrain)

Godot 4 提供了「地形 (Terrain)」系統,用來自動處理這類圖塊之間的連接。
這能讓你在繪製地圖時,自動使用「正確」的圖塊變體,而不需要手動切換。

地形(Terrains)系統是由 地形集 (Terrain Sets)、地形 (Terrains) 和 圖塊 (Tiles) 所組成的。

  • 一個 TileSet 可以包含一個或多個 地形集 (Terrain Sets);
  • 每個 地形集(Terrain Sets) 可以包含一個或多個 地形 (Terrains);
  • 而每個 地形(Terrains) 又可以包含一個或多個 圖塊 (Tiles)。

地形圖塊(Terrain Tile)具有一個 中心位 (Center Bit) 和多個 周圍偵測位 (Peering Bits)。
每個位元 (bit) 都可以被指定為某一種地形(Terrain)。
我們通常把「某個圖塊(Tile)的中心與相鄰位被指定的地形組合」稱為它的 位元遮罩 (bitmask)。

中心位(也就是圖塊本身的地形),代表整個圖塊所屬的地形類型;
而「相鄰位(Peering Bits)」則像拼圖邊緣一樣,決定這個圖塊可以與哪些其他圖塊相鄰拼接。
圖塊的形狀以及所使用的地形模式(Terrain Mode),
會共同決定這個圖塊擁有哪些相鄰位,以及這些相鄰位的外觀與排列方式。


Godot 4 中有三種 Terrain Modes

匹配邊緣模式 (Match Sides)

  • 此模式需要圖塊(Tile)數量為: 16
  • 優點:圖塊 (Til)最容易被設定與使用,
    • 你可以用它們畫出直線straight lines),
    • 也可以畫出轉角(turns)與交叉口(intersections),
    • 或是填滿整塊矩形區域(filled-in rectangles)。
  • 限制:你無法畫出斜向的線條diagonal lines)。此外,當你繪製矩形區域(rectangles)時,無法區別「外轉角(Outside corners)」與「內轉角(Inside corners)」。對於許多圖塊(Tiles)來說,美術設計上會要求內轉角的樣子必須與外轉角不同。如果你的情況是這樣,你將無法繪製比「單一矩形」更複雜的形狀。
  • 周圍偵測位元 (Peering Bits):
    • 在 匹配邊緣模式(Match Sides)下,會使用圖塊 (Tiles)邊緣的周圍偵測位元 (Peering Bits)。
    • 這表示 正方形(Square)和等軸測(Isometric)的圖塊(Tiles)具有四個周圍偵測位元 (Peering Bits);
    • 而六邊形的圖塊(hexagonal tiles)則有六個。
    • 每個周圍偵測位元 (Peering Bits)只會對應到一個鄰近圖塊 (neighboring tile)。位於角落的鄰居則不會被影響。

角對齊模式 (Match Corners)

  • 此模式需要圖塊(Tile)數量為: 16
  • 優點:圖塊 (Tile)最容易被設定與使用,
    • 你可以用它畫出較複雜的形狀,特別適合用於繪製大面積的陸地(landscape) 或是洞穴地形(caves)
  • 限制:圖塊 (Tile)只能以 4 個為一組(2x2 方塊)進行連接。這意味著無法實現細微的細節,也無法繪製寬度僅為單個圖塊 (Tile)的線條。
    • 注意為了避免錯誤,在此模式下,請使用 Rectangle 工具來繪製,並至少保證要四個 tile 在一起,
  • 周圍偵測位元 (Peering Bits):角對齊模式 (Match Corners)在圖塊 (Tile)的頂角(Corners)上使用周圍偵測位元(Peering bits)
    • 方形(Square)和等軸測(Isometric)的圖塊(Tiles): 具有四個周圍偵測位元 (Peering Bits),且每個周圍偵測位元 (Peering Bits)處會有 3 個鄰近圖塊(Tiles)。
    • 六角形 (Hexagonal) 圖塊(Tiles): 擁有 6 個周圍偵測位元 (Peering Bits),但每個周圍偵測位元 (Peering Bits)處只有 2 個鄰近圖塊(Tiles)。

角與邊對齊 (Match Corners and Sides)

  • 此模式需要圖塊(Tile)數量為: 47
  • 優點:最全能的模式,可以做到另外兩個模式能做到的所有形狀
  • 限制:他無法建立對角線(diagonal lines)且他需要最多的圖塊(Tile)。
  • 周圍偵測位元 (Peering Bits):
    • 在此模式下,圖塊 (Tiles)的頂角 (Corners) 與 邊緣 (Edges) 同時使用周圍偵測位元 (Peering Bits)。
    • 這表示 正方形(Square)和等軸測(Isometric)的圖塊(Tiles)具有8個周圍偵測位元 (Peering Bits);
    • 而六邊形的圖塊(hexagonal tiles)擁有 12 個。
    • 在每個「邊」的部分,每個周圍偵測位元 (Peering Bits)只會對應到一個鄰近圖塊 (neighboring tile)。
    • 在「角」的部分,方形與等距圖塊有 3 個鄰居,六角形圖塊則有 2 個鄰居。所有共享同一個頂角的圖塊 (Tiles),其該角的周圍偵測位元 (Peering Bits)必須設置為相同的地形。

評論