PhysicsService
*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.
PhysicsService principalmente contiene métodos para trabajar con grupos de colisión que definen si un conjunto de partes puede o no colisionar con partes en otros grupos de colisión. Puede registrar un grupo de colisión a través de Class.PhysicsService:RegisterCollisionGroup()|RegisterCollisionGroup
La creación, eliminación y modificación de las relaciones de colisión entre grupos de colisión está limitada a Scripts del lado del servidor.
Vea Filtro de colisión para obtener detalles de uso en Studio y dentro de los scripts.
Resumo
Métodos
Establece el estado de colisión entre dos grupos.
Devuelve si los dos grupos colisión.
Regresa el número máximo de grupos de colisión.
Devuelve una tabla con información sobre todos los grupos de colisión del lugar.
Comprueba si se ha registrado un grupo de colisión.
Registra un nuevo grupo de colisión con el nombre dado.
Renombra el grupo de colisión especificado.
No registra el grupo de colisión para el nombre dado.
Propriedades
Métodos
CollisionGroupSetCollidable
Establece el estado de colisión entre dos grupos. Este método lanzará un error si uno de los grupos no está registrado, por lo que se recomienda que confirme el registro de cada grupo a través de PhysicsService:IsCollisionGroupRegistered() antes de realizar esta llamada.
Parâmetros
Devolução
CollisionGroupsAreCollidable
Regresa si los dos grupos de colisión especificados chocarán. Este método también devolverá true si uno de los grupos no está registrado, ya que la máscara de colisión predeterminada se interpone con todos los grupos.
Parâmetros
Devolução
GetMaxCollisionGroups
Devuelve el número máximo de grupos de colisión que soporta el motor. Este valor actualmente es 32.
Devolução
GetRegisteredCollisionGroups
Devuelve una tabla con información sobre todos los grupos de colisión del lugar. Cada valor en la tabla devuelta es una tabla y contiene dos miembros:
<tbody><tr><td>máscara</td><td>entero</td><td>La máscara del grupo de colisión; solo para uso interno.</td></tr><tr><td>nombre</td><td>cadena</td><td>Nombre del grupo de colisión.</td></tr></tbody>
Miembro | Tipo | Descripción |
---|
Devolução
IsCollisionGroupRegistered
Revisa si se ha registrado un grupo de colisión. Se recomienda que llames a este método antes de llamar métodos que lanzan errores para grupos de colisión no registrados, como PhysicsService:CollisionGroupSetCollidable() .
Parâmetros
Devolução
RegisterCollisionGroup
Registra un nuevo grupo de colisión con el nombre dado. El nombre no puede ser "Default" .
Tenga en cuenta que este método tiene un ligero sobrepeso de rendimiento según el número de BaseParts en el espacio de trabajo, por lo que se recomienda que registre todos los grupos de colisión en el momento de editar a través del editor Studio y llame a Class.PhysicsService:UnregisterCollisionGroup()|Un
Parâmetros
Devolução
Amostras de código
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
Renombra el grupo de colisión registrado especificado, pero no renombra el <a href="/reference/engine/databases/databases.md"> Class.BasePart.CollisionGroup|CollisionGroup</a> propiedad de las partes que utilizan el grupo. El primer argumento de este método es el nombre del grupo para renombrar, el segundo argumento es el
Este método lanzará un error de tiempo de ejecución en las siguientes situaciones:
- Nombre no válido o vacío proporcionado para cualquier argumento.
- El método se llama desde un cliente.
Tenga en cuenta que este método tiene un ligero sobrepeso de rendimiento basado en el número de BaseParts en el espacio de trabajo, por lo que se recomienda que registre todos los grupos de colisión en el momento de edición a través del editor Studio y renombrearlos tan infrecuentemente como sea posible.
Parâmetros
Devolução
UnregisterCollisionGroup
No registra el grupo de colisión para el nombre dado, con los siguientes comportamientos:
- Si se proporciona un nombre inválido, el método no hará nada.
- Si el nombre reservado "Default" se proporciona o si el método se llama desde un cliente, se lanzará un error.
- Si hay alguna parte en el grupo de colisión cuando se elimina, esas partes todavía mantendrán el mismo nombre de grupo de colisión. El comportamiento físico de las partes en un grupo eliminado es definido, por lo que se recomienda mover cualquier parte en un grupo eliminado a otro grupo, como el "Default".
Tenga en cuenta que este método tiene un ligero sobrepeso de rendimiento basado en el número de BaseParts en el espacio de trabajo, por lo que se recomienda que registre todos los grupos de colisión en el momento de edición a través del editor Studio y llame a este método con la mayor frecuencia posible.