Système de sommeil

*Ce contenu est traduit en utilisant l'IA (Beta) et peut contenir des erreurs. Pour consulter cette page en anglais, clique ici.

Chaque assemblage dans le moteur Roblox correspond à un seul corps rigide. La position et la vitesse de chaque corps rigide décrivent l'endroit où il se trouve et à quelle vitesse il se déplace, et l'une des tâches moteur primaires est de mettre à jour les positions et les vitesses de chaque corps rigide.

Les assemblages peuvent être connectés ensemble avec contraintes mécaniques et contraintes mover pour former des mécanismes tels que des voitures ou des avions. Au fur et à mesure que le nombre d'assemblages et de contraintes dans un mécanisme augmente, le temps requis pour simuler le mécanisme augmente également. Heureusement, cet décalage est un OFFSET lorsque le système de sommeil détermine que le mote

États de sommeil

Chaque assemblage peut être dans l'un des trois états : veille, vérification de sommeil, ou dors.

Réveillé

Une réveillée assemblée bouge ou accélère, et est donc simulée. Les assemblées entrent dans cet état à partir des situations décrites dans vérification du sommeil et dormir, ainsi que 2>situations de réveil supplémentaires2>.

Vérification du sommeil

Une assemblée non mobile qui partage une contrainte avec au moins un éveillé voisin, est mise dans l'état sleep-checking et n'est pas simulée. À chaque étape de monde, un sleep-checking assemblage vérifie si :

  • La déviation de position d'une position voisine est supérieure à la zone de déploiement du voisin.
  • La valeur de l'accélération de l'assemblage voisin et de la taille actuelle du pas de temps est supérieure à la valeur de vitesse d'角 et/ou de vitesse linéaire seuil.

Si l'une de ces conditions est vraie, ou sous l'une des situations de réveil supplémentaires, l'assemblage de vérification du sommeil entre dans l'état veille.

Dormir

Une dormir assemblage ne se déplace pas et n'accélère pas, et est donc non simulé.

Une assemblage est déterminée non移动 en vérifiant sa déviation de position , calculée comme la plus grande déviation de la position moyenne du point le plus loin de son centre de masse sur le plus récent ensemble de pas de monde. Si cette déviation est supérieure à la zone de réveil, l'assemblage entre en l'état veille.

Dans certains cas, il suffit de vérifier pour non-mouvement pour provoquer une erreur d'assemblage à entrer incorrectement l'état de sommeil. Par exemple, si une balle est lancée directement vers le haut, sa position ne change presque pas pour un certain nombre de worldsteps alors qu'elle approche sa hauteur maximale, ce qui la rend un candidat pour dormir et ne jamais tomber en arrière. Pour

Référence de seuil

Le tableau suivant fournit les seuils de déplacement et de vitesse utilisés pour déterminer si une assemblage se déplace ou accélère.

seuilValeurChangement d'état
Décalage voisin0,01 mètresvérification du sommeilréveillé
Vitesse linéaire du voisin0,2 mètre/svérification du sommeilréveillé
Vitesse d'angle du voisin0,2 radians/svérification du sommeilréveillé
Déplacement0,001 mètresdormir >, se réveiller
Vitesse linéaire0,1 mètre/sdormir >, se réveiller
Vitesse angulaire0,1 radians/sdormir >, se réveiller

Situations de réveil supplémentaires

En plus des situations décrites dans sleep-checking et sleeping, une assemblage entre dans l'état 醒来 lorsque :

Visualisation de débogage

Pendant le test de jeu, vous pouvez visualiser l'état de sommeil de l'assemblage en basculant sur éveillé les parties dans le widget Options de visualisation dans le coin supérieur droit de la fenêtre de jeu3D.

A close up view of the 3D viewport with the Visualization Options button indicated in the upper-right corner.

Une fois activé, les parties simulées seront encerclées par leur état de sommeil actuel, avec parties encerclées en rouge, sleep-checking parties encerclées en orange et sleeping parties non encerclées.

Pièces simulées détaillées par la couleur représentant leur état de sommeil actuel