Cada montagem no Roblox Engine corresponde a um único corpo rígido .A posição e velocidade de cada corpo rígido descrevem onde está localizado e quão rápido está se movendo, e uma das principais tarefas do motor primário é atualizar as posições e velocidades de cada montagem.
Assemblies podem ser conectadas juntamente com restrições mecânicas e restrições de mover para formar mecanismos como carros ou aviões.À medida que o número de montagens e restrições em um mecanismo aumenta, o tempo necessário para simular o mecanismo também aumenta.Felizmente, esse aumento é compensado quando o sistema de sono determina que o motor pode pular a simulação de montagens não móveis.
Estados de sono
Cada montagem pode estar em um dos três estados: acordado , verificando sono ou dormindo .
Acordado
Uma montagem acordada está se movendo ou acelerando e, portanto, é simulada.Assemblies entram neste estado a partir de situações descritas em verificação de sono e sono, bem como situações adicionais de vigília.
Verificação de sono
Uma montagem não móvel que compartilha uma restrição com pelo menos uma montagem vizinha acordada é colocada no estado de verificação de sono e não é simulada.Em cada etapa mundial, uma montagem de verificação de sono verifica se:
- A deviação de posição de uma montagem vizinha é maior que o limite de deslocamento de vizinho .
- O produto da aceleração de uma montagem vizinha e do tamanho atual do passo de tempo é maior que o limite Velocidade Angular do Vizinho e/ou Velocidade Linear do Vizinho.
Se alguma dessas condições for verdadeira ou estiver sob qualquer uma das situações de vigília adicionais , a montagem de verificação de sono entra no estado acordado .
Dormindo
Uma montagem dormindo não está se movendo nem acelerando e, portanto, não está sendo simulada.
Uma montagem é determinada a não se mover verificando sua deviação de posição , calculada como a maior deviação da posição média do ponto mais distante de seu centro de massa sobre o conjunto mais recente de passos mundiais.Se essa deviação for maior que o limite de Disposição, a montagem entra no estado acordado.
Em alguns casos, simplesmente verificar se não há movimento faria com que uma montagem entrasse incorretamente no estado de sono.Por exemplo, se uma bola for jogada diretamente para cima, sua posição quase não muda por uma série de passos mundiais à medida que se aproxima de sua altura máxima, tornando-a candidata a dormir e nunca cair de volta.Para lidar com esses casos, o motor monitora se o produto da aceleração e do tamanho do passo atual da montagem excede o limite de Velocidade Linear e/ou Velocidade Angular.
Referência de limite
A tabela a seguir fornece os vários limites de deslocamento e velocidade usados para determinar se uma montagem está se movendo ou acelerando.
Critério | Valor | Mudança de estado |
---|---|---|
Disposição do Vizinho | 0.01 metros | verificação de sono ⟩ acordado |
Velocidade linear do vizinho | 0,2 metros/s | verificação de sono ⟩ acordado |
Velocidade angular do vizinho | 0,2 radianos/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/segundo | dormindo ⟩ acordado |
Situações de despertar adicionais
Além das situações descritas em verificação de sono e sono, uma montagem entra no estado acordado quando:
Ela 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 através de ApplyImpulse(), ApplyImpulseAtPosition() ou ApplyAngularImpulse().
Quaisquer alterações de propriedades relacionadas à física no Workspace que afetariam a montagem, incluindo:
Um novo Constraint é criado com um Attachment que é parente de um BasePart dentro da montagem.
Quaisquer alterações de propriedade para um Constraint com um Attachment que é pai de um BasePart dentro da montagem.
As alterações de propriedade da CurrentAngle 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 de jogo, você pode visualizar estados de sono de montagem alternando em peças acordadas a partir do widget Opções de Visualização no canto superior direito da janela de visualização 3D.

Uma vez ativado, as peças simuladas serão delineadas pelo seu estado de sono atual, com peças acordadas delineadas em vermelho, peças de verificação de sono delineadas em laranja e peças de sono não delineadas.