Bau系统 (Baussystem)

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.

Roblox Battle Royale verfügt über ein Baissystem, mit dem Benutzer ihre eigenen Strukturen bauen können, um einen höheren Boden für einen besseren Schusswinkel zu erreichen, oder um während der Schlacht Schutz zu bieten.Mit einem Menü kann der Benutzer aus einer Reihe verschiedener Kacheltypen auswählen und sie in der Welt platzieren.

Building Example

Um ein ordentliches und strukturiertes System aufrechtzuerhalten:

  • Jede Kachel muss sich mit einer anderen vorhandenen Kachel oder mit dem Boden verbinden.
  • Platziere alle Gebäudeziegel innerhalb eines Gitternetzes, das mit der Spielwelt koordiniert wird, damit die Ziegel richtig verbunden und nicht übereinanderliegend sind.

Fliesenkomposition

Damit Benutzer neue Kacheln schnell und einfach erstellen können, muss das Baubsystem verstehen, welche Kacheln miteinander verbunden sind und wo neue Kacheln auf dem Raster platziert werden können.

Fliesen verwenden 3 Komponenten: das visuelle Element, das als Objektverwendet wird, Informationen über den Raum, den die Fliese einnimmt im Vergleich zu anderen Weltobjekten, und die Verbindungspunkte einer Fliese, die es ermöglicht, zusätzliche Fliesen an verfügbare Kanten zu verbinden.

Asset

Ein Asset ist ein BasePart ( Part , MeshPart , etc.) platziert in ReplicatedStorage/BuildingSystem/Assets , das darstellt, wie die Kachel in der Weltaussieht.Diese BasePart muss zwei Kinder haben:

  • ObjektTyp — A StringValue mit einem Value des Fliesentypennamens.
  • Startrotierung — Eine mit einer Startrotierung der Kachel, wenn ein Benutzer sie in die Welt stellt.

Belegung

Die Gewährleistung, dass eine Kachel die richtige Position in einem Rastersystem einnimmt, ist wichtig und kann mit einer Bitmaske durchgeführt werden.Eine Bitmaske repräsentiert den physischen Raum, den der Kacheltyp innerhalb eines grundlegenden Abschnitts des Platzoder einer Zelle einnimmt.Jede Building-System-Kachel/Objekt kann eine beliebige Anzahl von Gesichtspunkten einer Gitterzelle (Vorderseite, linke Seite, Zurück, rechte Seite, obere Seite und untere Seite) und eine beliebige Anzahl von Octanten in einer Gitterzelle einnehmen.Ein Benutzer kann ein Gebäude-Systemobjekt nur in einer Zelle platzieren, wenn alle Gesichter und Octanten, die das Objekt einnimmt, in dieser Zelle verfügbar sind.Die Besetzung für ein Gebäudesystemobjekt wird wie folgt definiert:

Bit-IndexBedeutung
0Unterseite des Zellsitzes
1Oberseite der Zelle
2Rechtes Gesicht der Zelle
3Rückseite der Zelle
4Linkes Gesicht der Zelle
5Vorderseite der Zelle
6 +X, –Y, +Z Octant der Zelle mit Ursprung im Zentrum der Zelle
7 +X, +Y, +Z Octant der Zelle mit Ursprung im Zentrum der Zelle
8 –X, –Y, +Z Octant der Zelle mit Ursprung im Zentrum der Zelle
9 –X, +Y, +Z Octant der Zelle mit Ursprung im Zentrum der Zelle
10 –X, –Y, –Z Octant der Zelle mit Ursprung im Zentrum der Zelle
11 –X, +Y, –Z Octant der Zelle mit Ursprung im Zentrum der Zelle
12 +X, –Y, –Z Octant der Zelle mit Ursprung im Zentrum der Zelle
13 +X, +Y, –Z Octant der Zelle mit Ursprung im Zentrum der Zelle

Verbindung

Kacheln müssen miteinander verbunden werden, um eine Struktur zu erstellen.Du kannst eine Bitmaske verwenden, die darstellt, welche Teile der Gesichter/Kanten der Zelle der Kacheltyp berührt.Die Verbindungsqualität eines Bauelements/Objekts wird durch eine Reihe von Verbindungspunkten, Bits, auf der Oberfläche einer Zelle dargestellt.Sie ordnen sich auf die folgende Weise auf den Gesichtern der Zelle an:

Octant Cube Diagram

Ein Baubausystem-Objekt wird als mit einem anderen Baubausystem-Objekt im Netz verbunden betrachtet, wenn es mindestens 2 Verbindungspunkte auf der Oberfläche einer Zelle teilt.

Erstelle neue Fliesentypen

Um einen neuen eingebenzu erstellen:

  1. Platziere das Asset in ReplicatedStorage/BuildingSystem/Assets. Denke daran, dass es ObjectType und StartingRotation Kinder wie oben definiert enthalten muss.

    Battle Royale Weapon Example
  2. Definieren Sie die Belegung und Verbindung für Ihren neuen Fliesentyp in ReplicatedStorage/BuildingSystem/Libraries/Grid/ObjectTypeConfigurations :

    Battle Royale Weapon Example

Zum Beispiel wird der Wand -Kacheltyp wie folgt ausgedrückt:


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
}

Arbeite mit Gelände

Wenn du eine Karte mit freier Form Terrain erstellen möchtest, die perfekt zum Baursystem passt, empfehlen wir, dass du das Höhenmodell-Import-System wie in Umwelt-Terrain beschrieben verwendest und die folgenden Details beachtest:

  • Das Terrain in Roblox wird durch ein dreidimensionales Array von Voxelen repräsentiert, jedes davon belegt einen Würfel von 4×4×4 Klötzen in der Welt.Aus diesem Grund verwendet Roblox Battle Royale eine Rasterzellgröße von 20×16×20 Blöcken mit Wandfliesen, die 20×16×1 Blöcke groß sind, und Boden-/Deckenplatten, die 20×1×20 Blöcke groß sind.Dies ermöglicht das Ausrichten von Fliesen und Terrain richtig.

  • Jedes Pixel in deiner Höhenkarte-Bild sollte ein Terrain-Voxel in der X/Z -Ebene darstellen, also repräsentiert ein 5×5-Bereich in Pixeln eine Gebäude-System-Gitterzelle, die einen 20×20-Noppenbereich einnimmt.

  • In deiner Höhenkarte-Bild stelle sicher, dass der rote Kanal oder der graue Kanalwert für jedes Pixel durch die Höhe deines Gebäude-Systemgitters zerlegbar ist, damit die Bodenplatten gut über dem Gelände liegen.

  • Wenn du deine Höhenkarte importierst, festlegenfest:


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