PhysicsService

Mostrar obsoleto

*Este conteúdo é traduzido por IA (Beta) e pode conter erros. Para ver a página em inglês, clique aqui.

Não criável
Serviço

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

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

name1: string
Valor Padrão: ""
name2: string
Valor Padrão: ""
collidable: boolean
Valor Padrão: ""

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

name1: string
Valor Padrão: ""
name2: string
Valor Padrão: ""

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>mask
portuguese: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

name: string
Valor Padrão: ""

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

name: string
Valor Padrão: ""

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

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

()

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

from: string
Valor Padrão: ""
to: string
Valor Padrão: ""

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.

Parâmetros

name: string
Valor Padrão: ""

Devolução

()

Eventos