PhysicsService
*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.
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.Puedes registrar un grupo de colisión a través de RegisterCollisionGroup() y asignarle partes por medio de establecer la propiedad de esas partes CollisionGroup a la nombre del grupo de colisión.
La creación, eliminación y modificación de las relaciones de colisión entre grupos de colisión se limita al lado del servidor Scripts .
Vea filtrado de colisiones para detalles de uso en Studio y dentro de los scripts.
Resumen
Métodos
Establece el estado de colisión entre dos grupos.
Devuelve si los dos grupos colisión.
Devuelve 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 un grupo de colisiones está registrado.
Registra un nuevo grupo de colisión con el nombre dado.
Renombra el grupo de colisión especificado.
Registra el grupo de colisión para el nombre dado.
Propiedades
Métodos
CollisionGroupSetCollidable
Establece el estado de colisión entre dos grupos.Este método lanzará un error si alguno de los grupos no está registrado, por lo que se recomienda que confirme el registro de cada grupo antes de realizar esta llamada PhysicsService:IsCollisionGroupRegistered().
Parámetros
Devuelve
CollisionGroupsAreCollidable
Devuelve si los dos grupos de colisión especificados colisionarán.Este método también devolverá verdadero si alguno de los grupos no está registrado, ya que la máscara de colisión predeterminada se superpone con todos los grupos.
Parámetros
Devuelve
GetMaxCollisionGroups
Devuelve el número máximo de grupos de colisión que el motor soporta. Este valor es actualmente 32.
Devuelve
GetRegisteredCollisionGroups
Devuelve una tabla con información sobre todos los grupos de colisión del lugar. Cada valor en la tabla devuelta es en sí mismo una tabla y contiene dos miembros:
<th>Tipo</th><th>Descripción</th></tr></thead><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 |
---|
Devuelve
IsCollisionGroupRegistered
Comprueba si un grupo de colisiones está registrado.Se recomienda que llames a este método antes de llamar a métodos que lanzan errores para grupos de colisión no registrados, como PhysicsService:CollisionGroupSetCollidable() .
Parámetros
Devuelve
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 una ligera sobrecarga de rendimiento basada 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 editar a través del editor de Studio y llame a UnregisterCollisionGroup() y RenameCollisionGroup() tan infrecuentemente como pueda.
Parámetros
Devuelve
Muestras de código
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
Renombra el grupo de colisión registrado especificado, pero no renombra la propiedad de las piezas que utilizan el grupo.El primer argumento de este método es el nombre del grupo para renombrar, el segundo argumento es el nuevo nombre para el grupo.Si el grupo especificado no existe, este método no hará nada.Las convenciones de nomenclatura para el nuevo nombre siguen las mismas reglas que si el grupo se estaba creando con RegisterCollisionGroup() .
Este método lanzará un error de tiempo de ejecución en los siguientes casos:
- Nombre inválido o vacío proporcionado para cualquiera de los argumentos.
- El método se llama desde un cliente.
Tenga en cuenta que este método tiene una ligera sobrecarga de rendimiento basada en el número de 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 de Studio y los renombre tan infrecuentemente como sea posible.
Parámetros
Devuelve
UnregisterCollisionGroup
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 producirá un error.
- Si hay alguna parte en el grupo de colisión cuando se elimina, esas partes mantendrán el mismo nombre de grupo de colisión.El comportamiento físico de las piezas en un grupo eliminado no está definido, por lo que se recomienda mover cualquier pieza en un grupo eliminado a otro grupo, como el grupo "Default".
Tenga en cuenta que este método tiene una ligera sobrecarga de rendimiento basada en el número de 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 de Studio y llame a este método tan infrecuentemente como sea posible.