PhysicsService

Mostrar obsoleto

*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.

No creable
Servicio

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.

Resumen

Métodos

Propiedades

Métodos

CollisionGroupSetCollidable

void

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

name1: string
name2: string
collidable: bool

Devuelve

void

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

name1: string
name2: string

Devuelve

GetMaxCollisionGroups

Devuelve el número máximo de grupos de colisión que soporta el motor. Este valor actualmente es 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 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>
MiembroTipoDescripción

Devuelve

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

name: string

Devuelve

RegisterCollisionGroup

void

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

name: string

Devuelve

void

Muestras de código

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

void

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

from: string
to: string

Devuelve

void

UnregisterCollisionGroup

void

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.

Parámetros

name: string

Devuelve

void

Eventos