PhysicsService
*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.
PhysicsService enthält vor allem Methoden zum Arbeiten mit Kollisionsgruppen , die definieren, ob ein Satz von Teilen mit Teilen in anderen Kollisionsgruppen zusammenstoßen kann oder nicht.Du kannst eine Kollisionsgruppe durch registrieren und Teile ihr zuweisen, indem du die Eigenschaft dieser Teile auf den Namen der Gruppeeinstellst.
Die Erstellung, Löschung und Änderung von Kollisionsbeziehungen zwischen Kollisionsgruppen ist auf die serverseitige Scripts beschränkt.
Siehe Kollisionsfilterung für Details zur Verwendung in Studio und innerhalb von Skripten.
Zusammenfassung
Methoden
Legt den Kollisionsstatus zwischen zwei Gruppen fest.
Gibt zurück, ob die beiden Gruppen Kollisionwerden.
Gibt die maximale Anzahl von Kollisionsgruppen zurück.
Gibt eine Tabelle mit Informationen über alle Kollisionsgruppen des Ortes zurück.
Überprüft, ob eine Kollisionsgruppe registriert ist.
Registriert eine neue Kollisionsgruppe mit dem angegebenen Namen.
Benennt die angegebene Gruppeumbenennen.
Registriert die Kollisionsgruppe für den angegebenen Namen nicht.
Eigenschaften
Methoden
CollisionGroupSetCollidable
Legt den Kollisionsstatus zwischen zwei Gruppen fest.Diese Methode wird einen Fehler werfen, wenn eine der Gruppen nicht registriert ist, daher wird empfohlen, dass Sie die Registrierung jeder Gruppe durch PhysicsService:IsCollisionGroupRegistered() bestätigen, bevor Sie diese Anruf machen.
Parameter
Rückgaben
CollisionGroupsAreCollidable
Gibt zurück, ob die zwei angegebenen Kollisionsgruppen kollidieren werden.Diese Methode wird auch wahr zurückkehren, wenn eine der Gruppen nicht registriert ist, da die Standard-Kollisionsmaske mit allen Gruppen kollidiert.
Parameter
Rückgaben
GetMaxCollisionGroups
Gibt die maximale Anzahl der Kollisionsgruppen zurück, die der Motor unterstützt. Der Wert beträgt derzeit 32.
Rückgaben
GetRegisteredCollisionGroups
Gibt eine Tabelle mit Informationen über alle Kollisionsgruppen des Ortes zurück. Jeder Wert in der zurückgegebenen Tabelle ist selbst eine Tabelle und enthält zwei Mitglieder:
<th>Typ</th><th>Beschreibung</th></tr></thead><tbody><tr><td>masken</td><td>ganzzahlig</td><td>Die Maske der Gruppe; nur für interne Verwendung.</td></tr><tr><td>bezeichnung</td><td>string</td><td>Name der Gruppe.</td></tr></tbody>
Mitglied |
---|
Rückgaben
IsCollisionGroupRegistered
Überprüft, ob eine Kollisionsgruppe registriert ist.Es wird empfohlen, diese Methode aufzurufen, bevor du Methoden aufrufst, die Fehler für nicht registrierte Kollisionsgruppen werfen, wie PhysicsService:CollisionGroupSetCollidable() .
Parameter
Rückgaben
RegisterCollisionGroup
Registriert eine neue Kollisionsgruppe mit dem angegebenen Namen. Der Name darf nicht "Default" sein.
Beachten Sie, dass diese Methode eine leichte Leistungsüberschussbasis auf der Anzahl von BaseParts im Arbeitsbereich hat, so dass es empfohlen wird, alle Kollisionsgruppen zur Bearbeitungszeit durch den Studio-Editor registrieren und UnregisterCollisionGroup() und RenameCollisionGroup() so selten wie möglich aufrufen.
Parameter
Rückgaben
Code-Beispiele
This example demonstrates one basic use of collision groups. It assigns BallPart to "CollisionGroupBall" and DoorPart to "CollisionGroupDoor", then makes the two groups non-collidable using PhysicsService:CollisionGroupSetCollidable().
local PhysicsService = game:GetService("PhysicsService")
local collisionGroupBall = "CollisionGroupBall"
local collisionGroupDoor = "CollisionGroupDoor"
-- Register collision groups
PhysicsService:RegisterCollisionGroup(collisionGroupBall)
PhysicsService:RegisterCollisionGroup(collisionGroupDoor)
-- Assign parts to collision groups
script.Parent.BallPart.CollisionGroup = collisionGroupBall
script.Parent.DoorPart.CollisionGroup = collisionGroupDoor
-- Set groups as non-collidable with each other and check the result
PhysicsService:CollisionGroupSetCollidable(collisionGroupBall, collisionGroupDoor, false)
print(PhysicsService:CollisionGroupsAreCollidable(collisionGroupBall, collisionGroupDoor)) --> false
RenameCollisionGroup
Rennt die angegebene registrierte Kollisionsgruppe umbenennen, aber benennt nicht die CollisionGroup Eigenschaft von Teilen, die die Gruppe verwenden.Das erste Argument dieser Methode ist der Name der Gruppe zum Umbenennen, das zweite Argument ist der neue Name für die Gruppe.Wenn die angegebene Gruppe nicht existiert, wird diese Methode nichts tun.Die Namenskonventionen für den neuen Namen folgen den gleichen Regeln wie wenn die Gruppe mit RegisterCollisionGroup() erstellt wird.
Diese Methode wird in den folgenden Fällen eine Laufzeitfehler werfen:
- Ungültiger oder leerer Name für eines der Argumente angegeben.
- Die Methode wird von einem Client aufgerufen.
Beachten Sie, dass diese Methode eine leichte Leistungsüberschreitung basierend auf der Anzahl von im Arbeitsbereich hat, so dass es empfohlen wird, alle Kollisionsgruppen zur Bearbeitungszeit durch den Studio-Editor zu registrieren und sie so selten wie möglich umbenennen.
Parameter
Rückgaben
UnregisterCollisionGroup
Entfernt die Kollisionsgruppe für den angegebenen Namen mit den folgenden Verhaltensweisen:
- Wenn ein ungültiger Name angegeben wird, wird die Methode nichts tun.
- Wenn der reservierte Name "Default" bereitgestellt wird, oder wenn die Methode von einem Client aus aufgerufen wird, wird ein Fehler geworfen.
- Wenn es Teile in der Kollisionsgruppe gibt, wenn sie entfernt wird, behalten diese Teile immer noch den gleichen Kollisionsgruppennamen.Das physische Verhalten von Teilen in einer entfernten Gruppe ist unbestimmt, daher wird empfohlen, alle Teile in einer entfernten Gruppe in eine andere Gruppe zu verschieben, wie die Gruppe "Default".
Beachten Sie, dass diese Methode eine leichte Leistungsüberschreitung basierend auf der Anzahl von BaseParts im Arbeitsbereich hat, so dass es empfohlen wird, alle Kollisionsgruppen zur Laufzeit durch den Studio-Editor zu registrieren und diese Methode so selten wie möglich aufzurufen.