Schlaf-System

*Dieser Inhalt wurde mit KI (Beta) übersetzt und kann Fehler enthalten. Um diese Seite auf Englisch zu sehen, klicke hier.

Jede Montagemaschine in der Roblox-Engine entspricht einer einzelnen starifen Körper. Die Position und Geschwindigkeit jedes starifen Körper beschreiben, wo er sich befindet und wie schnell er sich bewegt, und eine der primären Engine-Aufgaben ist es, die Positionen und Geschwindigkeiten jedes Montagemaschines zu aktualisieren.

Assemblies können mit mechanischen约束 und Mover-约束 zusammen verbunden werden, um Mechanismen wie Autos oder Flugzeuge zu bilden. Wenn die Anzahl von Assemblies und约束 in einem Mechanismus zunimmt, erhöht sich die Zeit, die zum Simulieren des Mechanismus erforderlich ist, auch. Glücklicherweise ist dieser Zuwachs ein Offset, wenn das Schlaf-System feststellt, dass der Motor die Simulation von

Schlafzustände

Jede Montagemaschine kann in einem von drei Zuständen sein: wach , schlaf-Checking oder schlafen .

Bewusst

Eine aufgewachte Montagemaschine bewegt sich oder beschleunigt und wird daher simuliert. Montagemaschinen betreten diesen Zustand aus Situationen, die in Schlaf-Checking und Schlaf beschrieben sind, sowie aus 1>zusätzlichen Wake-Situationen1>.

Schlaf-Checking

Eine nicht bewegliche Montage, die mit mindestens einer wachen Nachbar montage eine Einschränkung teilt, wird in den Schlaf-Check-Zustand versetzt und ist nicht simuliert. Auf jedem Worldstep überprüft eine Schlaf-Check-Montage, ob:

  • Die Positionserrung eines angrenzenden Montagewerks ist größer als die Nachbarn-Versatz-Schwellenwert.
  • Die Beschleunigung und die aktuelle Schrittgröße eines Nachbarn-Assembly sind größer als die Neigung und/oder 1>Linie1>-Schwellenwerte.

Wenn eine dieser Bedingungen wahr ist, oder unter einer der zusätzlichen Wake-Situationen, dann betritt die Schlaf-Check-Konfiguration den Wake-Check-Status.

Schlafen

Eine schlafende Montage bewegt sich nicht und beschleunigt sich nicht, und wird daher nicht simuliert.

Eine Montage wird als nicht beweglich bestimmt, indem ihre Position-Versatz überprüft wird, berechnet als maximale Abweichung von der durchschnittlichen Position des Punkts über die meisten neuen Set von Weltschritten. Wenn diese Abweichung größer als der Versatz Threshold ist, betritt die Montage den Wach-Status.

In einigen Fällen macht einfach das Prüfen für Nicht-Bewegung einen Montage, der in den Schlafzustand einfährt, unangemessen eintreten. Zum Beispiel, wenn ein Ball gerade nach oben geworfen wird, seine Position ändert sich nur leicht für eine Reihe von Weltschritten, wenn er seine maximale Höhe erreicht, und wird somit ein Kandidat zum Schlaf

Schwellenwert-Referenz

Die folgende Tabelle liefert die verschiedenen Versatz- und Geschwindigkeitswellen, die verwendet werden, um zu bestimmen, ob eine Montagem sich bewegt oder beschleunigt.

SchwellenwertWertZustandsänderung
Nachbarschaft-Versatz0,01 klötzeschlaf-checking >, wake-up
Nachbar-Liniengeschwindigkeit0,2 klötze/sschlaf-checking >, wake-up
Nachbarn-Angular-Geschwindigkeit0,2 radian/sschlaf-checking >, wake-up
Versetzung0,001 klötzeschläft >, wach ist
Linische Geschwindigkeit0,1 klötze/sschläft >, wach ist
Winkelgeschwindigkeit0,1 radian/sschläft >, wach ist

Zusätzliche Wake-Situationen

Neben Situationen, die in sleep-checking und sleep beschrieben sind, betritt eine Montagemaschine den wachen Zustand, wenn:

Debug-Visualisierung

Während des Spieltests kannst du die Zustände des Montages durch das Umschalten von Awake-Teilen aus dem Visualisierungs-Optionen-Pod in der oberen rechten Ecke der Ansichtsfenstervisualisieren.

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

Nach dem Aktivieren werden simulierte Teile durch ihren aktuellen Schlafzustand umrissen, mit wache Teile in rot umrissen, Schlaf-Checking Teile in orange und Schlaf Teile ungefaltet.

Simulierte Teile mit der Farbe, die ihren aktuellen Schlafzustand darstellt