PhysicsService

Afficher les obsolètes

*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.

Création impossible
Service

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

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

name1: string
Valeur par défaut : ""
name2: string
Valeur par défaut : ""
collidable: boolean
Valeur par défaut : ""

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

name1: string
Valeur par défaut : ""
name2: string
Valeur par défaut : ""

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

name: string
Valeur par défaut : ""

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

name: string
Valeur par défaut : ""

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().

PhysicsService:RegisterCollisionGroup

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

from: string
Valeur par défaut : ""
to: string
Valeur par défaut : ""

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.

Paramètres

name: string
Valeur par défaut : ""

Retours

()

Évènements