PhysicsService
*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.
PhysicsService principalement contient des méthodes pour travailler avec des groupes de collision qui définissent si un ensemble de parties peut ou non collider avec des parties dans d'autres groupes de collision.Vous pouvez enregistrer un groupe de collision via et attribuer des parties à ce groupe en affectant la propriété de ces parties à nom du groupe de collision.
La création, la suppression et la modification des relations de collision entre les groupes de collision sont limitées au côté du serveur Scripts .
Voir filtrage de collision pour les détails d'utilisation dans Studio et dans les scripts.
Résumé
Méthodes
Définit le statut de collision entre deux groupes.
Renvoie si les deux groupes vont s'collision.
Renvoie le nombre maximum de groupes de collision.
Renvoie une table avec des informations sur tous les groupes de collision du emplacement.
Vérifie si un groupe de collision est enregistré.
Enregistre un nouveau groupe de collision avec le nom donné.
Renommer le groupe de collision spécifié.
Désenregistre le groupe de collision pour le nom donné.
Propriétés
Méthodes
CollisionGroupSetCollidable
Définit le statut de collision entre deux groupes.Cette méthode lancera une erreur si l'un des groupes n'est pas enregistré, il est donc recommandé de confirmer l'enregistrement de chaque groupe avant d'effectuer cet appel PhysicsService:IsCollisionGroupRegistered().
Paramètres
Retours
CollisionGroupsAreCollidable
Renvoie si les deux groupes de collision spécifiés vont s'affronter.Cette méthode retournera également vrai si l'un des groupes n'est pas enregistré, car le masque de collision par défaut se heurte à tous les groupes.
Paramètres
Retours
GetMaxCollisionGroups
Renvoie le nombre maximum de groupes de collision que le moteur prend en charge. Cette valeur est actuellement de 32.
Retours
GetRegisteredCollisionGroups
Renvoie une table avec des informations sur tous les groupes de collision du emplacement. Chaque valeur dans la table renvoyée est elle-même une table et contient deux membres :
<th>Type</th><th>Avertissement</th></tr></thead><tbody><tr><td>masque</td><td>entier</td><td>Le masque du groupe de collision ; uniquement pour une utilisation interne.</td></tr><tr><td>nom</td><td>chaîne</td><td>Nom du groupe de collision.</td></tr></tbody>
Membre |
---|
Retours
IsCollisionGroupRegistered
Vérifie si un groupe de collision est enregistré.Il est recommandé d'appeler cette méthode avant d'appeler des méthodes qui génèrent des erreurs pour des groupes de collision non enregistrés, tels que PhysicsService:CollisionGroupSetCollidable() .
Paramètres
Retours
RegisterCollisionGroup
Enregistre un nouveau groupe de collision avec le nom donné. Le nom ne peut pas être "Default".
Notez que cette méthode a un léger décalage de performance basé sur le nombre de BaseParts dans l'espace de travail, il est donc recommandé de vous inscrire tous les groupes de collision au moment de l'édition via l'éditeur Studio et d'appeler UnregisterCollisionGroup() et RenameCollisionGroup() aussi rarement que possible.
Paramètres
Retours
Échantillons de code
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
Renomme le groupe de collision enregistré spécifié, mais ne pas renommer la propriété CollisionGroup des parties qui utilisent le groupe.Le premier argument de cette méthode est le nom du groupe à renommer, le deuxième argument est le nouveau nom du groupe.Si le groupe spécifié n'existe pas, cette méthode ne fera rien.Les conventions de nomination pour le nouveau nom suivent les mêmes règles que si le groupe était créé avec RegisterCollisionGroup() .
Cette méthode lancera une erreur d'exécution dans les circonstances suivantes :
- Nom invalide ou vide fourni pour l'un des arguments.
- La méthode est appelée à partir d'un client.
Notez que cette méthode a un léger décalage de performance basé sur le nombre de dans l'espace de travail, il est donc recommandé de vous inscrire tous les groupes de collision au moment de l'édition via l'éditeur Studio et de les renommer le plus souvent possible.
Paramètres
Retours
UnregisterCollisionGroup
Désenregistre le groupe de collision pour le nom donné, avec les comportements suivants :
- Si un nom non valide est fourni, la méthode ne fera rien.
- Si le nom réservé "Default" est fourni ou si la méthode est appelée à partir d'un client, il lancera une erreur.
- S'il y a des parties dans le groupe de collision lorsqu'il est supprimé, ces parties conserveront toujours le même nom de groupe de collision.Le comportement physique des parties dans un groupe supprimé n'est pas défini, il est donc recommandé de déplacer toutes les parties dans un groupe supprimé vers un autre groupe, tel que le groupe "Default".
Notez que cette méthode a un léger décalage de performance basé sur le nombre de dans l'espace de travail, il est donc recommandé de vous inscrire à tous les groupes de collision au moment de l'édition via l'éditeur Studio et d'appeler cette méthode aussi rarement que possible.