PhysicsService
*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.
PhysicsService principalmente contém métodos para trabalhar com grupos de colisão que definem se um conjunto de peças pode ou não colidir com peças em outros grupos de colisão.Você pode registrar um grupo de colisão através de e atribuir partes a ele definindo a propriedade dessas partes para o nome do grupo de colisão.
Criar, excluir e modificar relações de colisão entre grupos de colisão está limitado ao lado do servidor Scripts.
Veja Filtro de Colisão para detalhes de uso no Studio e dentro de scripts.
Resumo
Métodos
Define o status de colisão entre dois grupos.
Retorna se os dois grupos colisão.
Retorna o número máximo de grupos de colisão.
Retorna uma tabela com informações sobre todos os grupos de colisão do local.
Verifica se um grupo de colisão está registrado.
Registra um novo grupo de colisão com o nome dado.
Renomeia o grupo de colisão especificado.
Desregistra o grupo de colisão para o nome dado.
Propriedades
Métodos
CollisionGroupSetCollidable
Define o status de colisão entre dois grupos.Este método irá lançar um erro se algum dos grupos não estiver registrado, portanto, é recomendado que você confirme o registro de cada grupo através de PhysicsService:IsCollisionGroupRegistered() antes de fazer este chamado.
Parâmetros
Devolução
CollisionGroupsAreCollidable
Retorna se os dois grupos de colisão especificados colidirão.Este método também retornará verdadeiro se algum dos grupos não estiver registrado, pois a máscara de colisão padrão colide com todos os grupos.
Parâmetros
Devolução
GetMaxCollisionGroups
Retorna o número máximo de grupos de colisão que o motor suporta. Este valor é atualmente 32.
Devolução
GetRegisteredCollisionGroups
Retorna uma tabela com informações sobre todos os grupos de colisão do local. Cada valor na tabela retornada é uma tabela em si e contém dois membros:
<th>Tipo</th><th>Descrição</th></tr></thead><tbody><tr><td>maskportuguese:máscara</td><td>integral</td><td>A máscara do grupo de colisão; apenas para uso interno.</td></tr><tr><td>único nome</td><td>string / cadeia / texto</td><td>Nome do grupo de colisão.</td></tr></tbody>
Membro |
---|
Devolução
IsCollisionGroupRegistered
Verifica se um grupo de colisão está registrado.Recomenda-se que você chame este método antes de chamar métodos que geram erros para grupos de colisão não registrados, como PhysicsService:CollisionGroupSetCollidable().
Parâmetros
Devolução
RegisterCollisionGroup
Registra um novo grupo de colisão com o nome dado. O nome não pode ser "Default" .
Observe que este método tem um pequeno aumento de desempenho com base no número de na área de trabalho, portanto, é recomendado que você registre todos os grupos de colisão no momento de edição através do editor Studio e chame e com a menor frequência possível.
Parâmetros
Devolução
Amostras 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
Renomeia o grupo de colisão registrado especificado, mas não renomeia a propriedade não da parte que utiliza o grupo.O primeiro argumento deste método é o nome do grupo para renomear, o segundo argumento é o novo nome para o grupo.Se o grupo especificado não existir, este método não fará nada.As convenções de nomeação para o novo nome seguem as mesmas regras como se o grupo estivesse sendo criado com RegisterCollisionGroup() .
Este método irá lançar um erro de tempo de execução nas seguintes situações:
- Nome inválido ou vazio fornecido para qualquer argumento.
- O método é chamado de um cliente.
Observe que este método tem um pequeno aumento de desempenho com base no número de na área de trabalho, portanto, é recomendado que você registre todos os grupos de colisão no momento da edição através do editor Studio e os renomeie com a menor frequência possível.
Parâmetros
Devolução
UnregisterCollisionGroup
Desregistra o grupo de colisão para o nome dado, com os seguintes comportamentos:
- Se um nome inválido for fornecido, o método não fará nada.
- Se o nome reservado "Default" for fornecido ou se o método for chamado de um cliente, ele vai lançar um erro.
- Se houver alguma parte no grupo de colisão quando for removida, essas partes ainda manterão o mesmo nome do grupo de colisão.O comportamento físico das peças em um grupo removido é definido, então é recomendado mover quaisquer peças em um grupo removido para outro grupo, como o grupo "Default".
Observe que este método tem um pequeno aumento de desempenho com base no número de na área de trabalho, portanto, é recomendado que você registre todos os grupos de colisão no momento da edição através do editor Studio e chame este método com a menor frequência possível.