Roblox GuidebookWissensbibliothek
Deutsch ⌄

Studio / ROBLOX

Roblox Studio: Collision Groups für zwei Gruppen einrichten

Richte zwei Gruppen in einer kleinen Übungsszene ein, konfiguriere ihre Matrixbeziehung und prüfe das Ergebnis mit physischen Teilen. Der Leitfaden unterscheidet den Studio-Editor vom Serverskript und verwendet aktuelle Workspace-Methoden.

Aktualisiert:

Was Collision Groups steuern #

Stell dir einen Übungskorridor vor, in dem zwei Teams farbige Kisten schieben. Kisten verschiedener Teams sollen durcheinander hindurchgehen, während Kisten desselben Teams kollidieren sollen; beide Teams sollen jedoch an Boden und Wänden stoppen. Dies ist ein erfundenes Lernbeispiel und beschreibt kein veröffentlichtes Spiel.

Collision Groups legen Kollisionsregeln für Klassen physischer Teile fest. Statt jedes Objektpaar einzeln einzustellen, weist du jedes BasePart einer Gruppe zu und bestimmst in einer Matrix, welche Gruppen kollidieren. Der Gruppenname allein bewirkt nichts: Entscheidend sind die Zuweisung des Teils und die Matrixbeziehung.

Eine kleine Übungsszene vorbereiten #

Beginne mit einer neuen Baseplate oder einer Projektkopie und speichere sie unter einem eigenen Namen. Füge einen breiten verankerten Boden, eine Wand und zwei kleine Kistenteile hinzu: ein blaues und ein oranges. Verankere die Kisten nicht, lasse Abstand und platziere sie über dem Boden. Konzentriere dich zunächst auf die Physik.

Setze bei jedem Teil CanCollide = true. Ist die Eigenschaft deaktiviert, bietet das Teil auch bei erlaubter Gruppenpaarung keinen normalen physischen Widerstand. Die Kisten müssen BasePart-Objekte wie Part oder MeshPart sein, keine Ordner oder Modelle. Gruppen werden Teilen zugewiesen. Prüfe bei einem Modell mit mehreren Teilen jedes relevante Teil.

GruppenpaarEinstellungErwartung in der Szene
BlueCrates ↔ BlueCratesEinBlaue Kisten stoppen aneinander
OrangeCrates ↔ OrangeCratesEinOrange Kisten stoppen aneinander
BlueCrates ↔ OrangeCratesAusVerschiedene Farben gehen durch einander
BlueCrates ↔ DefaultEinBlaue Kisten treffen Boden und Wand
OrangeCrates ↔ DefaultEinOrange Kisten treffen Boden und Wand

Matrix vor der Zuweisung planen #

Verwende BlueCrates und OrangeCrates. Beide Gruppen sollen mit Default kollidieren; die Beziehung zwischen den Übungsgruppen soll deaktiviert sein. Zwei Kisten pro Gruppe erleichtern die Beobachtung.

Die Matrix beschreibt Paare, keine Einbahnstraße. Die Beziehung von A zu B gilt für beide Gruppen: Kollidiert BlueCrates nicht mit OrangeCrates, gehen auch orange Kisten durch blaue hindurch. Die Beziehung einer Gruppe zu sich selbst steuert Teile derselben Gruppe. Lasse sie eingeschaltet, wenn Kisten desselben Teams einander schieben sollen.

Gruppen im Studio-Editor erstellen #

Öffne den Editor für Collision Groups. Die aktuelle Roblox-Dokumentation nennt Window > 3D; Position und Bezeichnung können sich je nach Studio-Version unterscheiden. Wähle Workspace, falls ein Auswahlfeld für die Welt erscheint. Füge über Add Group die eindeutigen Namen BlueCrates und OrangeCrates hinzu.

Default ist bereits vorhanden. Alle Teile gehören anfangs dazu; die Gruppe kann weder umbenannt noch gelöscht werden. Prüfe, dass beide neuen Gruppen in der Matrix erscheinen, und deaktiviere nur die Kreuzung BlueCrates/OrangeCrates. Falls der Editor zwei Zellen für die Paarung zeigt, prüfe den Paarzustand. Speichere das Projekt.

Die passenden BaseParts zuweisen #

Wähle beide blauen Kisten in der 3D-Ansicht und weise sie über das Pluszeichen (⊕) in der Zeile BlueCrates zu. Wiederhole das für die orangenen Kisten. Das genaue Aussehen des Panels hängt von der Studio-Version ab. Wähle jedes Teil aus und prüfe CollisionGroup im Eigenschaftenfenster.

Bei einer neuen Gruppenzuweisung verlässt das Teil seine vorherige Gruppe; jedes Teil gehört immer nur einer Gruppe an. Klappe Modelle auf und kontrolliere alle physischen Teile, damit keines in Default bleibt. Verwechsle CollisionGroup nicht mit CanCollide: Die erste Eigenschaft wählt Gruppenregeln, die zweite schaltet die physische Kollision des Teils ein oder aus.

Matrix einstellen und Symmetrie verstehen #

Die geplante Matrix: BlueCrates ↔ BlueCrates eingeschaltet; OrangeCrates ↔ OrangeCrates eingeschaltet; BlueCrates ↔ OrangeCrates ausgeschaltet; beide Übungsgruppen ↔ Default eingeschaltet. Eingeschaltet bedeutet, dass das Paar bei passenden übrigen Einstellungen physisch kollidieren kann. Ausgeschaltet bedeutet, dass Teile durcheinandergehen, selbst wenn CanCollide bei beiden aktiv ist.

Für genau ein Teilepaar empfiehlt Roblox, NoCollisionConstraint in Betracht zu ziehen. Collision Groups eignen sich, wenn eine Regel für viele Objekte gilt. Erstelle nicht viele Gruppen, wenn nur eine einzelne Ausnahme benötigt wird.

Matrix: Die Gruppen gehen durcheinander, beide kollidieren mit Default.Bild in voller Größe öffnen ↗
Eigene Lernabbildung der Gruppenregeln; kein Studio-Bildschirmfoto und kein Testergebnis.

Dasselbe Beispiel als Serverskript #

Für das Skript-Gegenstück legst du ein normales Script in ServerScriptService und zwei Workspace-Teile namens BlueCrate und OrangeCrate an. Das Beispiel registriert fehlende Gruppen, konfiguriert ihre Beziehung und weist die Teile zu:

Die aktuelle API dokumentiert RegisterCollisionGroup, IsCollisionGroupRegistered und CollisionGroupSetCollidable auf Workspace/WorldRoot. Gruppen und Beziehungen müssen serverseitig erstellt beziehungsweise geändert werden. Für ein Projekt ist die vorherige Einrichtung im Studio-Editor oft praktisch; Roblox weist auf einen kleinen Registrierungsaufwand hin, der von der Anzahl der Workspace-Teile abhängt. Verwende in neuen Beispielen nicht die veralteten PhysicsService:CreateCollisionGroup() oder SetPartCollisionGroup(): Die aktuelle PhysicsService-Referenz markiert diese API als veraltet und verweist auf Workspace.

Der kurze Code weist nur zwei einzelne Teile zu. Er verarbeitet nicht alle Teile eines Modells oder Charakters. Eine erweiterte Lösung muss Nachfolger durchlaufen und jedes BasePart zuweisen. Die Objektnamen müssen mit Explorer übereinstimmen.

local workspace = game:GetService("Workspace")
local blueName = "BlueCrates"
local orangeName = "OrangeCrates"

for _, name in {blueName, orangeName} do
    if not workspace:IsCollisionGroupRegistered(name) then
        workspace:RegisterCollisionGroup(name)
    end
end

workspace:CollisionGroupSetCollidable(blueName, blueName, true)
workspace:CollisionGroupSetCollidable(orangeName, orangeName, true)
workspace:CollisionGroupSetCollidable(blueName, "Default", true)
workspace:CollisionGroupSetCollidable(orangeName, "Default", true)
workspace:CollisionGroupSetCollidable(blueName, orangeName, false)
workspace.BlueCrate.CollisionGroup = blueName
workspace.OrangeCrate.CollisionGroup = orangeName

Verhalten in einem separaten Lauf prüfen #

Speichere die Szene und starte mit einem Studio-Modus die Simulation, zum Beispiel Play. Dies ist ein Prüfplan, kein hier ausgeführter Test: Studio wurde nicht gestartet und es wurde kein Physikergebnis beobachtet.

Platziere blaue und orangene Kisten so, dass sie aufeinandertreffen. Bei deaktivierter Paarung sollen sie durcheinandergehen. Blau gegen Blau und Orange gegen Orange sollen kollidieren. Jede Kiste soll am Boden und an der Wand in Default stoppen. Beende die Simulation, schalte nur die Beziehung Blue/Orange ein, starte erneut und vergleiche dieses Paar. Prüfe vor jedem Vergleich Ausgangspositionen und CanCollide.

Notiere das tatsächliche Ergebnis nach deinem eigenen Lauf. Eine lokale Simulation belegt nicht das Verhalten in allen Netzwerkszenarien oder auf allen Geräten.

Prüfe pro Durchlauf ein Paar. Stelle die untere Kiste auf den Boden und die obere mit einem Luftspalt direkt darüber; beide bleiben unverankert. Beim Start fällt die obere auf die untere. Bei gleicher Gruppe erwartest du Kontakt, bei ausgeschalteter Beziehung zwischen verschiedenen Farben ein Hindurchfallen. Aktiviere danach die Beziehung und wiederhole dieselbe Anordnung. Stelle für die Wand eine Kiste daneben und schiebe sie mit der Figur; prüfe den Boden gesondert. Schreibe deine tatsächliche Beobachtung nach dem Start auf, statt das erwartete Ergebnis zu übernehmen.

Prüffolge von der Gruppenerstellung bis zur Simulation.Bild in voller Größe öffnen ↗
Eigener Plan für die manuelle Prüfung; hier wurde nichts gestartet.
BeobachtungZuerst prüfenNächster Schritt
Verschiedene Gruppen kollidierenZuweisung beider Teile und MatrixzelleAktives Workspace bestätigen
Kiste fällt durch den BodenCanCollide und Beziehung zu DefaultPhysikeigenschaften des Bodens prüfen
Modellteil verhält sich andersCollisionGroup jedes BasePartÜbrige Teile zuweisen und wiederholen
Skript findet Gruppe nichtName und RegistrierungSchreibweise und Serverkontext prüfen
Touched löst durch ein Teil ausEigenständiges Verhalten des EreignissesBewegung für physischen Halt prüfen

Unerwartete Ergebnisse untersuchen #

Kollidieren beide Farben weiterhin, prüfe nacheinander, ob beide Teile unterschiedlichen Gruppen zugewiesen sind, ob ihre Matrixbeziehung deaktiviert ist und ob du dasselbe Workspace bearbeitest, das du inspizierst. Prüfe danach CanCollide und ob Modellteile in Default verblieben sind.

Fällt eine Kiste durch den Boden, prüfe die Beziehung ihrer Gruppe zu Default sowie CanCollide an beiden Teilen. Meldet ein Skript eine unbekannte Gruppe, ist die Registrierung möglicherweise nicht erfolgt oder der Name stimmt nicht. CollisionGroupSetCollidable meldet einen Fehler bei nicht registrierten Gruppen; deshalb prüft und registriert das Beispiel sie zuerst.

Touched-Ereignisse sind ein anderes Thema: Laut Roblox können sie unabhängig von CanCollide ausgelöst werden. Ein Touch-Ereignis allein beweist keinen physischen Halt.

Beobachtung festhalten und fortfahren #

Speichere die gewählte Matrix, die Liste der zugewiesenen Teile und eine kurze Notiz: geprüfte Paare, erwartetes Verhalten und beobachtetes Ergebnis. Änderst du die Matrix, wiederhole die Prüfungen für betroffene Paare, einschließlich der Kollisionen mit Default.

Als Nächstes könntest du beim Hinzufügen jedes Modellteil einer Gruppe zuweisen, Charaktere prüfen oder eine Gruppenregel mit NoCollisionConstraint vergleichen. Jede Erweiterung braucht eine eigene Prüfung. Das Lernziel ist erreicht, wenn du das Ergebnis aus der Matrix vorhersagen und anschließend in einem Studio-Lauf bestätigen kannst.

Originalquellen

Roblox Creator Hub — Collisions
Roblox Creator Hub — WorldRoot
Roblox Creator Hub — PhysicsService (legacy API status)
Roblox Creator Hub — Physics