建築系統

*此內容是使用 AI(Beta 測試版)翻譯,可能含有錯誤。若要以英文檢視此頁面,請按一下這裡

Roblox Battle Royale 具有一個建築系統,可讓用戶建造自己的結構以達到更好的射擊角度或在戰鬥期間提供遮蓋。使用選單,用戶可以從多種不同的瓷磚類型中選擇,並將它們放置在世界上。

Building Example

為了維持有序且結構化的系統:

  • 每個瓷磚必須連接到另一個現有瓷磚或地面。
  • 將所有建築瓷磚放置在與遊戲世界協調的網格內,以便瓷磚正確連接且不會重疊。

瓷磚組成

為了讓使用者快速且簡單地建造新瓷磚,建築系統需要了解哪些瓷磚相互連接,以及新瓷磚可以放置在網格上的位置。

瓷磚使用 3 個組件:用於瓷磚對物件的 視覺資產,用於參考其他世界對象的 瓷磚佔用空間,以及瓷磚的 連接點,可以讓額外的瓷磚連接到可用的邊緣。

資產

資產是一個 BasePart ( Part , MeshPart ,等) 放置在 ReplicatedStorage/BuildingSystem/Assets 中,代表瓷磚在遊戲世界中的外觀。這個 BasePart 必須有兩個孩子:

  • 對象類型 — 一個具有 StringValue 瓷磚類型名稱的 Value
  • 開始旋轉 — 當使用者將它放置在世界上時,瓷磚塊的開始旋轉 NumberValue 的一個 Value

占用率

確保瓷磚在網格系統中佔有正確位置很重要,可以使用位元面具來完成。位元面板代表瓷磚類型在世界空間或細胞的基本部分佔用的物理空間。每個建築系統瓷磚/對象可以佔用網格細胞的任何面(前、左、返回、右、頂部和底部)和任何數量的八角形網格細胞。使用者只能將建築系統對象放置在細胞中,如果所有佔用的面和八角都可用於該細胞。建築系統對象的使用率定義如下:

位元指數意義
0細胞的底部面
1細胞的頂面
2細胞右面
3細胞後面
4細胞的左面
5細胞前面
6 +X, –Y, +Z 細胞中心的細胞的八角形
7 +X、+Y、+Z 細胞中心的細胞的八角形
8 –X, –Y, +Z 細胞中心的細胞的八角形
9 –X, +Y, +Z 細胞中心的細胞的八角形
10 –X、–Y、–Z 細胞中心的細胞的八角形
11 –X, +Y, –Z 細胞中心的細胞的八角形
12 +X, –Y, –Z 細胞中心的細胞的八角形
13 +X, +Y, –Z 細胞中心的細胞的八角形

連接性

瓷磚需要相互連接以創建結構。您可以使用代表瓷磚類型觸摸哪些部分瓷磚表面/邊緣的位元面具。一個建築系統瓷磚/對象的連接性由一系列連接點、位元構成,在細胞表面。他們在細胞的表面安排以下方式:

Octant Cube Diagram

如果建築系統對象在縮放網格上分享至少 2 個連接點,就會被認為與另一個建築系統對象相連在網格上。

創建新的瓷磚類型

要創建新的瓷磚輸入:

  1. 將資產放置在 ReplicatedStorage/BuildingSystem/Assets 。記住,它必須包含上述定義的 ObjectTypeStartingRotation 子孫。

    Battle Royale Weapon Example
  2. 中為新的瓷磚類型定義占用ReplicatedStorage/BuildingSystem/Libraries/Grid/ObjectTypeConfigurations

    Battle Royale Weapon Example

例如, 牆壁 瓷磚類型表達如下:


ObjectTypeConfigurations.Wall = {
ASSET_OFFSET_FROM_CENTER = Vector3.new(0, 0, -CELL_DIMENSIONS.Z / 2),
CONNECTIVITY = 0xFF8000, -- 0b 111 111 111 000 000 000 000 000
OCCUPANCY = 0x20, -- 0b 00 00 00 00 1 0 0 0 0 0
}

與地形工作

如果您想創建一張地圖,其自由形式的地形與建築系統完全匹配,我們建議您使用環境地形系統中所述的高度地圖匯入系統,並注意以下細節:

  • Roblox 中的地形由一個三維陣列的虛擬點組成,每個虛擬點佔用世界中 4×4×4 格子的立方體。因此,Roblox 戰鬥皇室使用 20×16×20 格子細胞尺寸,並使用 20×16×1 的牆瓷磚和 20×1×20 的地板/天花板瓷磚。這樣可以讓瓷磚和地形正確排列。

  • 你高度地圖圖像中的每個像素應該代表 X/Z 平面中的一個地形體積,因此5×5像素區域代表一個佔有20×20格子區的建築系統網格細胞。

  • 在您的高度地圖圖像中,請確保每個畫素的紅色通道或灰色通道值與建築系統網格細胞的高度相等,以便地板瓷磚能很好地坐在地形上。

  • 當您匯入高度地圖時,設定:


    Position (X, Y, Z) = 0, 0, 0
    Size (X, Y, Z) = heightmap_width × 4, 256, heightmap_length × 4