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.
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.
| Gruppenpaar | Einstellung | Erwartung in der Szene |
|---|---|---|
| BlueCrates ↔ BlueCrates | Ein | Blaue Kisten stoppen aneinander |
| OrangeCrates ↔ OrangeCrates | Ein | Orange Kisten stoppen aneinander |
| BlueCrates ↔ OrangeCrates | Aus | Verschiedene Farben gehen durch einander |
| BlueCrates ↔ Default | Ein | Blaue Kisten treffen Boden und Wand |
| OrangeCrates ↔ Default | Ein | Orange 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.
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 = orangeNameVerhalten 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.
| Beobachtung | Zuerst prüfen | Nächster Schritt |
|---|---|---|
| Verschiedene Gruppen kollidieren | Zuweisung beider Teile und Matrixzelle | Aktives Workspace bestätigen |
| Kiste fällt durch den Boden | CanCollide und Beziehung zu Default | Physikeigenschaften des Bodens prüfen |
| Modellteil verhält sich anders | CollisionGroup jedes BasePart | Übrige Teile zuweisen und wiederholen |
| Skript findet Gruppe nicht | Name und Registrierung | Schreibweise und Serverkontext prüfen |
| Touched löst durch ein Teil aus | Eigenständiges Verhalten des Ereignisses | Bewegung 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 — CollisionsRoblox Creator Hub — WorldRoot
Roblox Creator Hub — PhysicsService (legacy API status)
Roblox Creator Hub — Physics