PhysicsService
*Questo contenuto è tradotto usando AI (Beta) e potrebbe contenere errori. Per visualizzare questa pagina in inglese, clicca qui.
PhysicsService principalmente contiene metodi per lavorare con gruppi di collisione che definiscono se un insieme di parti può o non può collidere con parti in altri gruppi di collisione.Puoi registrare un gruppo di collisioni attraverso e assegnare parti a esso impostando la proprietà di quelle parti alla nome del gruppo di collisione.
La creazione, la cancellazione e la modifica delle relazioni di collisione tra gruppi di collisione è limitata al lato server Scripts .
Vedi Filtro di collisione per i dettagli di utilizzo in Studio e all'interno degli script.
Sommario
Proprietà
Metodi
Imposta lo stato di collisione tra due gruppi.
Restituisce se i due gruppi si Collisione.
Restituisce il numero massimo di gruppi di collisione.
Restituisce una tabella con informazioni su tutti i gruppi di collisione del Posto.
Verifica se un gruppo di collisioni è registrato.
Registra un nuovo gruppo di collisione con il nome fornito.
Rinomina il Gruppodi collisione specificato.
Annulla il gruppo di collisione per il nome specificato.
Proprietà
Metodi
CollisionGroupSetCollidable
Imposta lo stato di collisione tra due gruppi.Questo metodo lancerà un'errore se uno qualsiasi dei gruppi non è registrato, quindi è consigliato confermare l'iscrizione di ciascun Gruppoattraverso PhysicsService:IsCollisionGroupRegistered() prima di eseguire questa chiamata.
Parametri
Restituzioni
CollisionGroupsAreCollidable
Restituisce se i due gruppi di collisione specificati si Collisione.Questo metodo restituirà anche vero se uno dei gruppi non è registrato, poiché la maschera di collisione predefinita si sovrappone a tutti i gruppi.
Parametri
Restituzioni
GetMaxCollisionGroups
Restituisce il numero massimo di gruppi di collisione che il motore supporta. Questo valore è attualmente 32.
Restituzioni
GetRegisteredCollisionGroups
Restituisce una tabella con informazioni su tutti i gruppi di collisione del Posto. Ogni valore nella tabella restituita è in sé una tabella e contiene due membri:
<th>Tipo</th><th>Descrizione</th></tr></thead><tbody><tr><td>maschera</td><td>integro</td><td>La maschera del Gruppodi collisione; solo per uso interno.</td></tr><tr><td>nome</td><td>stringa</td><td>Nome del Gruppodi collisione.</td></tr></tbody>
Membro |
---|
Restituzioni
IsCollisionGroupRegistered
Verifica se un gruppo di collisioni è registrato.Si consiglia di chiamare questo metodo prima di chiamare metodi che lanciano errori per gruppi di collisione non registrati, come PhysicsService:CollisionGroupSetCollidable() .
Parametri
Restituzioni
RegisterCollisionGroup
Registra un nuovo gruppo di collisione con il nome fornito. Il nome non può essere "Default" .
Nota che questo metodo ha un leggero aumento delle prestazioni basato sul numero di nell'area di lavoro, quindi è consigliato registrare tutti i gruppi di collisione all'ora dell'edizione attraverso l'editor Studio e chiamare e il più raramente possibile.
Parametri
Restituzioni
Campioni di codice
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
Rinomina il Gruppodi collisione registrato specificato, ma non non rinomina la proprietà CollisionGroup delle parti che utilizzano il Gruppo.Il primo argomento di questo metodo è il nome del gruppo da rinominare, il secondo argomento è il nuovo nome del Gruppo.Se il gruppo specificato non esiste, questo metodo non farà nulla.Le convenzioni di denominazione per il nuovo nome seguono le stesse regole come se il gruppo fosse stato creato con RegisterCollisionGroup() .
Questo metodo lancerà un errore di runtime nelle seguenti situazioni:
- Nome non valido o vuoto fornito per uno degli argomento.
- Il metodo viene chiamato da un client.
Nota che questo metodo ha un leggero overhead di prestazioni basato sul numero di in spazio di lavoro, quindi è consigliato registrare tutti i gruppi di collisione all'ora dell'edizione attraverso l'editor Studio e rinominarli il più raramente possibile.
Parametri
Restituzioni
UnregisterCollisionGroup
Annulla il gruppo di collisione per il nome specificato, con i seguenti comportamenti:
- Se viene fornito un nome non valido, il metodo non farà nulla.
- Se il nome riservato "Default" viene fornito o se il metodo viene chiamato da un client, verrà lanciato un errore.
- Se ci sono parti nel gruppo di collisione quando viene rimosso, quelle parti manterranno comunque lo stesso nome del gruppo di collisione.Il comportamento fisico delle parti in un gruppo rimosso non è definito, quindi è consigliato spostare qualsiasi parte in un gruppo rimosso in un altro Gruppo, come il Gruppo"Default".
Nota che questo metodo ha un leggero overhead di prestazioni basato sul numero di in spazio di lavoro, quindi è consigliato registrare tutti i gruppi di collisione all'ora dell'edizione attraverso l'editor Studio e chiamare questo metodo il più raramente possibile.