Cada ensamblaje en el motor de Roblox coincide con un solo cuerpo rígido . La posición y velocidad de cada cuerpo rígido describe dónde se encuentra y cómo se mueve rápidamente, y una de las tareas principales del motor es actualizar las posiciones y velocidades de cada ensamblaje.
Las asociaciones se pueden conectar juntas con limitaciones mecánicas y limitaciones de mover para formar mecanismos como coches o aviones. Cuando el número de asociaciones y limitaciones en un mecanismo aumenta, el tiempo requerido para simular el mecanismo también aumenta. Afortunadamente, este aumento es el desplazamiento cuando el sistema de sueño determina que el motor puede saltar la simulación de no mover
Estados de sueño
Cada montaje puede estar en uno de tres estados: despierto , chequeo de sueño o dormido .
Consciente
Un despertar montaje se está moviendo o acelerando, y por lo tanto se simula. Las montajes ingresan a este estado a partir de situaciones descritas en sleep-checking y sleep, así como 1>situaciones de despertar adicionales1> .
Chequeo de dormir
Un montaje no móvil que comparte un límite con al menos un awake vecino montaje está puesto en el estado de sleep-checking y no se simula. En cada paso de mundo, un sleep-checking montaje verifica si:
- La desviación de posición de una instalación vecina es mayor que el umbral de desplazamiento del vecino.
- El producto de la aceleración de una armaria vecina y el tamaño actual de la etiqueta de tiempo es mayor que la Velocidad de rotación del vecino y/o Velocidad de rotación del vecino umbral.
Si se cumple alguna de estas condiciones, o bajo cualquiera de las condiciones adicionales de estado de la guarda, la instalación de seguimiento del sueño ingresa al estado de vigilancia de la guarda.
Dormir
Un montaje de sueño no se mueve ni acelera, por lo tanto, no se simula.
Se determina que un montaje no es móvil al ver su desviación de posición , calculada como la máxima desviación desde la posición promedio del punto más lejos de su centro de masa sobre el conjunto de pasos de mundo más reciente. Si esta desviación es mayor que la desviación de posición umbral, el montaje ingresa al estado de alarma.
En algunos casos, simplemente verificando si no se mueve se causaría un error en la construcción para ingresar incorrectamente al estado de sueño. Por ejemplo, si se lanza una bola directamente hacia arriba, su posición apenas cambia para un número de pasos de mundo mientras se acerca a su máxima altura, haciéndola elegible para dormir y nunca volver a caer. Para manejar estos
Referencia de umbral
La siguiente tabla proporciona los umbrales de desplazamiento y velocidad utilizados para determinar si una instalación se está moviendo o acelerando.
Swell | Valor | Cambio de estado |
---|---|---|
Desplazamiento de vecinos | 0.01 metros | chequeo de sueño > despierto |
Velocidad Lineal del Vecino | 0.2 pulgadas/s | chequeo de sueño > despierto |
Velocidad de Angulo de vecino | 0.2 radianes/s | chequeo de sueño > despierto |
Desplazamiento | 0.001 metros | duermen >, >despiertos |
Velocidad Lineal | 0.1 metros/s | duermen >, >despiertos |
Velocidad Angular | 0.1 radianes/s | duermen >, >despiertos |
Situaciones de Alarma Adicionales
Además de las situaciones descritas en sleep-checking y sleeping, una instalación ingresa al estado de 醒来 cuando:
Está en colisión con otra montura.
Cualquier propiedad relacionada con la física de cualquier BasePart dentro de los cambios de la instalación, incluyendo:
Se aplica un impulso no nulo a cualquier BasePart dentro de la instalación a través de ApplyImpulse() , ApplyImpulseAtPosition() o 1> Class.BasePart:ApplyAngularImpulseAtPosition()|ApplyAngularImpulse()1> .
Cualquier cambio de propiedad relacionado con la física en el Workspace que afecte la instalación, incluida la siguiente:
Se crea un nuevo Constraint con un Attachment que es padre de un BasePart dentro de la instalación.
Cualquier cambio de propiedad para un Constraint con un Attachment que es padre de un BasePart dentro de la instalación.
La propiedad CurrentAngle cambia para un Motor que está conectado a un BasePart dentro de la instalación.
La instalación contiene un VehicleSeat con un personaje jugador sentado.
La instalación está dentro del BlastRadius de un Explosion .
Visualización de diagnóstico
Durante el juego, puede ver los estados de sueño de la сборка al alternar en Despertar partes desde el widget Opciones de visualización en la esquina superior derecha de la ventana de vista 3D.
Una vez habilitado, las partes simuladas se contornojarán por su estado de sueño actual, con partes despiertas partes desplegadas en rojo, partes de control de sueño desplegadas en naranja y partes de sueño desplegadas.