Cada montagem no motor do Roblox corresponde a um único corpo rígido. A posição e velocidade de cada corpo rígido são descritas onde ele está localizado e quão rápido ele está se movendo, e uma das tarefas principais do motor é atualizar as posições e velocidades de cada montagem.
Assemblies podem ser conectados juntos com restrições mecânicas e restrições de mover para formar mecanismos, como carros ou aviões. À medida que o número de assemblies e restrições em um mecanismo aumenta, o tempo necessário para simular o mecanismo também aumenta. Felizmente, esse aumento é um deslocamento quando o sistema de sono determina que o motor pode pular a simula
Estados de sono
Cada montagem pode estar em um dos três estados: acordado, verificando o sono ou dormindo.
Despertar
Uma montagem de despertar está se movendo ou acelerando, e por isso é simulada. Montagens entram nesse estado a partir de situações descritas em verificação de sono e 2>snooping2>, bem como 5>situações de despertar adicional5>.
Check-de-Sleep
Uma montagem não móvel que compartilha um limite com pelo menos uma montagem acordada vizinha é colocada no estado de sono e não é simulada. Em cada passo de mundo, uma montagem de sono verifica se:
- A variação de posição de uma montagem vizinha é maior que o Número de Deslocamento limite.
- O produto da aceleração de uma montagem vizinha e do tamanho atual do passo de tempo é maior que o Velocidade Angular do Vizinho e/ou Velocidade Linial do Vizinho limite.
Se uma dessas condições for verdadeira ou sob qualquer uma das situações de acordo adicional, a instalação de rastreamento de sono entra no estado acordado.
Sleeping
Uma montagem de sono não se move nem acelera, e por isso não é simulada.
Uma montagem é determinada para ser não móvel verificando sua desvinculação de posição , calculada como a maior deviação da posição média do ponto mais distante de sua centro de massa sobre o mais recente conjunto de etapas mundiais. Se esta deviação for maior que o deslocamento threshold, a montagem entra no estado acordado.
Em alguns casos, simplesmente verificar se não há movimento causaria uma montagem para entrar inesperadamente no estado de sono. Por exemplo, se uma bola for jogada direto para cima, sua posição quase não muda para um número de passos de linha enquanto se aproxima de sua máxima altura, fazendo-a um candidato para dormir e nunca cair de volta. Para lidar com tais
Referência de Subida
A tabela a seguir fornece os vários limites de deslocamento e velocidade usados para determinar se uma montagem está se movendo ou acelerando.
Limite | Valor | Mudança de Estado |
---|---|---|
Deslocamento de Vizinho | 0.01 metros | verificação de sono >, acordado |
Velocidade Linar Vizinho | 0,2 metros/s | verificação de sono >, acordado |
Velocidade Angular do Vizinho | 0,2 r$/s | verificação de sono >, acordado |
Deslocamento | 0.001 metros | dormindo >, acordado |
Velocidade Linear | 0,1 metros/s | dormindo >, acordado |
Velocidade Angular | 0.1 radianos/s | dormindo >, acordado |
Situações de Despertar Adicionais
Além de situações descritas em cheque de sono e dormir, uma montagem entra no estado de vigia quando:
Isso colide com outra montagem.
Qualquer propriedade relacionada à física de qualquer BasePart dentro das alterações de montagem, incluindo:
Um impulso não zero é aplicado a qualquer BasePart dentro da montagem via ApplyImpulse() , ApplyImpulseAtPosition() ou 1> Class.BasePart:ApplyAngularImpulseAtPosition()|ApplyAngularImpulse()1> .
Quaisquer alterações relacionadas à física no Workspace que afetariam a montagem, incluindo:
Um novo Constraint é criado com um Attachment que é filho de um BasePart dentro da montagem.
Quaisquer alterações de propriedade para um Constraint com um Attachment que é filho de um BasePart dentro da montagem.
As propriedades CurrentAngle são alteradas para um Motor que está conectado a um BasePart dentro da montagem.
A montagem contém um VehicleSeat com um personagem de jogador sentado.
A montagem está dentro do BlastRadius de um Explosion .
Visualização de Depuração
Durante o teste do jogo, você pode visualizar estados de sono de montagem ativando Awake parts no widget Opções de Visualização no canto superior direito da janela de visualização 3D.
Uma vez ativado, peças simuladas serão contornadas pelo estado de sono atual delas, com ake peças contornadas em vermelho, check-in peças contornadas em laranja e sleep peças não contornadas.