Roblox Battle Royale oferuje system budowania, który umożliwia użytkownikom budowanie własnych struktur, aby osiągnąć wyższy poziom, aby uzyskać lepszy kąt strzału lub zapewnić pokrycie podczas bitwy. Używając menu, użytkownik może wybrać z kilku różnych rodzajów płytki i umieścić je w świecie.
Aby utrzymać porządny i zstrukturyzowany system:
- Każda płytki musi się połączyć z inną istniejącą płytki lub z ziemią.
- Umieść wszystkie płytki budowlane w kadrze zgodnej z światem gry, aby płytki połączyły się poprawnie i nie kolidowały.
Kompozycja płyt
Aby użytkownicy mogli szybko i łatwo budować nowe płytki, system budowania musi zrozumieć, które płytki są połączone ze sobą i gdzie można umieścić nowe płytki na siatce.
Płytki używają 3 komponentów: ressourcen wizualnych, które są używane jako obiekt płytki, informacje o przestrzeni zajętej przez płytkę w odniesieniu do innych obiektów świata i łączenie płytki, aby umożliwić połączenie dodatkowych płytek z dostępnymi krawędźmi.
Zasób
Aset jest BasePart ( Part , MeshPart , itp.) umieszczony w 1> ReplicatedStorage/BuildingSystem/Assets1> przedstawiający to, jak wygląda płytki w świecie gry. Ten 4> Class.BasePart4> musi mieć dwa dzieci:
- StartRotation — NumberValue z Value rotacji początkowej płytki, gdy użytkownik ją umieści na świecie.
Zajętość
Upewnienie się, że płytki zajmują poprawną lokalizację w systemie sieci, jest ważne i można to zrobić używając bitMask. bitMask reprezentuje przestrzeń fizyczną, którą zajmuje typ płytki, w podstawowej sekcji świata przestrzeni, lub komórki. Każdy ob
Indeks bitowy | Znaczenie |
---|---|
0 | Dół twarzy komórki |
1 | Górna twarz komórki |
2 | Prawa twarz komórki |
3 | Tylna strona komórki |
4 | Lewe oblicze komórki |
5 | Przednia strona komórki |
6 | +X, –Y, +Z oktan liczby z zadanym centrum |
7 | +X, +Y, +Z oktan liczby z zadanym centrum |
8 | –X, –Y, +Z oktan celu z początkiem w centrum celu |
9 | –X, +Y, +Z oktan celu z początkiem w centrum celu |
10 | –X, –Y, –Z oktan liczby z zadanym centrum |
11 | –X, +Y, –Z oktan liczby z zadanym centrum |
12 | +X, –Y, –Z oktan liczby z zadanym centrum |
13 | +X, +Y, –Z oktan liczby z zadanym centrum |
Łączność
Płytki muszą się połączyć ze sobą, aby stworzyć strukturę. Możesz użyć bitMask , która представляет, jakie części twarzy/krawędzi komórki dotyka typu płytki. A płytki systemu budowlanego/objętego są przedstawione poprzez serię punktów połączenia, bity, na powierzchni komórki. One rozdzielają się w następujący sposób na twarzach komórki:
Obiekt systemu budowlanego jest uważany za połączony z innym obiektem systemu budowlanego w grze, jeśli dzieli co najmniej 2 punkty połączenia na powierzchni komórki.
Tworzenie nowych rodzajów płytki
Aby utworzyć nowy wpisywaćpłytki:
Umieść zasób w ReplicatedStorage/BuildingSystem/Assets . Pamiętaj, że musi zawierać ObjectType i StartingRotation dzieci, jak zdefiniowano powyżej.
Definiuj Occupancy i Connectivity dla nowego typu płytki w ReplicatedStorage/BuildingSystem/Libraries/Grid/ObjectTypeConfigurations :
Na przykład wzór płytki Ściana jest wyrażony następująco:
ObjectTypeConfigurations.Wall = {ASSET_OFFSET_FROM_CENTER = Vector3.new(0, 0, -CELL_DIMENSIONS.Z / 2),CONNECTIVITY = 0xFF8000, -- 0b 111 111 111 000 000 000 000 000OCCUPANCY = 0x20, -- 0b 00 00 00 00 1 0 0 0 0 0}
Praca z terenem
Jeśli chcesz stworzyć mapę z wolnej formy terenu, która idealnie pasuje do systemu budowlanego, zalecamy użyć systemu importu wysokości opisanego w środowiskowym terenie i obserwować następujące szczegóły:
Teren w Roblox jest reprezentowany przez trójwymiarową matrykę woxelów, każde z nich zajmuje kostkę 4 × 4 × 4 w świecie. Ze względu na to, Roblox Battle Royale używa rozmiaru komórki siatki 20×16×20, z wałkami 20×16×1 i płytkami podłogowymi/sufitowym
Każdy piksel w Twoim obrazie mapy wysokości powinien reprezentować jeden wierzchownik terenu w samolocie X/Z , więc 5×5 obszar w pikselach reprezentuje jedną komórkę sieci systemu budowlanego, która zajmuje obszar 20×20.
W swoim obrazie kanalnym upewnij się, że wartość kanału czerwonego lub szarego dla każdego piksela jest dzielna przez wysokość swojego systemu sieci komórki, aby płytki podłogowe siedziały dobrze na górze terenu.
Gdy importujesz swoją mapę wysokości, ustawiać:
Position (X, Y, Z) = 0, 0, 0Size (X, Y, Z) = heightmap_width × 4, 256, heightmap_length × 4