System budowania

*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.

W grze Roblox Battle Royale znajduje się system budowania, który pozwala użytkownikom budować własne struktury, aby osiągnąć wyższy grunt dla lepszego kąta strzelania lub zapewnić osłonę podczas bitwy.Używając menu, użytkownik może wybrać z wielu różnych typów płytek i umieścić je na świecie.

Building Example

Aby utrzymać uporządkowany i zstrukturyzowany system:

  • Każda płytka musi połączyć się z inną istniejącą płytką lub z ziemią.
  • Umieść wszystkie płytki budowlane w siatce skoordynowanej z światem gry, aby płytki prawidłowo się połączyły i nie pokryły się.

Kompozycja płytek

Aby użytkownicy mogli budować nowe płytki szybko i łatwo, system budowania musi zrozumieć, które płytki są ze sobą połączone i gdzie można umieścić nowe płytki na siatce.

Płytki wykorzystują 3 komponenty: element wizualny , który jest używany jako obiekt płytek, informacje o przestrzeni, którą zajmuje płytka, w odniesieniu do innych obiektów świata, oraz punkty połączenia płytki, które pozwalają na połączenie dodatkowych płytek z dostępnymi krawędziami.

Aktywum

Aktywem jest BasePart ( Part , MeshPart , itp.) umieszczony w ReplicatedStorage/BuildingSystem/Assets reprezentujący wygląd płytki w świecie gry.Ten BasePart musi mieć dwoje dzieci:

  • Typ obiektu — A z nazwą typu płytki.
  • Początkowa rotacja — A z początkową rotacją płyтки, gdy użytkownik umieści ją w świecie.

Zajętość

Zapewnienie, że płytka zajmuje właściwe położenie w systemie siatki jest ważne i można to zrobić za pomocą bitmaski.Bitmask reprezentuje przestrzeń fizyczną, którą rodzaj płytek zajmuje w podstawowej sekcji przestrzeni świata lub komórki.Każda płyta/obiekt systemu budowlanego może zajmować dowolną liczbę twarzy komórki siatki (przód, lewo, tył, prawo, góra i dół) oraz dowolną liczbę octantów w komórce siatki.Użytkownik może umieścić obiekt systemu budowlanego tylko w komórce, jeśli wszystkie twarze i octanty, które zajmuje obiekt, są dostępne w tej komórce.Dostępność dla obiektu systemu budowlanego jest określona w następujący sposób:

Indeks bitówZnaczenie
0Dolna twarz komórki
1Najwyższa twarz komórki
2Prawe oblicze komórki
3Tylna strona komórki
4Lewe oblicze komórki
5Przód komórki
6 +X, –Y, +Z półokrąg komórki z centrum komórki
7 +X, +Y, +Z półokrąg komórki z centrum komórki
8 –X, –Y, +Z półokrąg komórki z centrum komórki
9 –X, +Y, +Z półokrąg komórki z centrum komórki
10 –X, –Y, –Z octant komórki z pochodzeniem w centrum komórki
11 –X, +Y, –Z półokrąg komórki z centrum komórki
12 +X, –Y, –Z ośmiokąt komórki z centrum komórki jako miejscem pochodzenia
13 +X, +Y, –Z ośmiokąt komórki z centrum komórki jako miejscem pochodzenia

Połączenie

Płytki muszą się połączyć, aby stworzyć strukturę.Możesz użyć bitmaski, która reprezentuje, jakie części twarzy/krawędzi komórki dotyka rodzaj płytek.Połączenie systemu budowlanego/obiektu jest reprezentowane przez serię punktów połączenia, bitów, na powierzchni komórki.Układają się w następujący sposób na powierzchni komórki:

Octant Cube Diagram

Obiekt systemu budowlanego jest uważany za połączony z innym obiektem systemu budowlanego na siatce, jeśli dzieli co najmniej 2 punkty połączenia na powierzchni komórki.

Twórz nowe rodzaje płytek

Aby utworzyć nowy wpisywaćpłytek:

  1. Umieść zasób w ReplicatedStorage/BuildingSystem/Assets. Pamiętaj, że musi zawierać ObjectType i StartingRotation dzieci zdefiniowane powyżej.

    Battle Royale Weapon Example
  2. Określ zajętość i połączenie dla nowego typu płytek w >:

    Battle Royale Weapon Example

Na przykład typ płyty ściennej Ściana jest wyrażony w następujący sposób:


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
}

Pracuj z terenem

Jeśli chcesz stworzyć mapę z dowolną formą terenu, która pasuje idealnie do systemu budowlanego, zalecamy użycie systemu importowania mapy wysokościowej zgodnie z opisem w Teren środowiskowy i obserwację następujących szczegółów:

  • Teren w Roblox jest reprezentowany przez trójwymiarową matrycę wokseli, każdy z których zajmuje kostkę o wymiarach 4×4×4 w świecie.Z tego powodu Roblox Battle Royale używa rozmiaru komórki siatki 20×16×20 szpilkami, z płytkami ścianowymi, które są 20×16×1 szpilkami, i płytkami podłogowymi/sufitowymi, które są 20×1×20 szpilkami.Umożliwia to budowanie płytek i terenu w prawidłowy sposób.

  • Każdy piksel w obrazie mapy wysokości powinien reprezentować jeden terenowy voxel w planie X/Z , więc obszar 5×5 w pikselach reprezentuje jedną komórkę siatki systemu budowlanego, która zajmuje obszar 20×20 w studach.

  • W obrazie mapy wysokości upewnij się, że czerwona kanał lub szara wartość kanału dla każdego piksela jest dzielna przez wysokość komórki siatki systemu budowlanego, aby płytki podłogowe pięknie leżały na terenie.

  • Gdy importujesz mapę wysokości, ustawiać:


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