Schlafsystem

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

Jede Baugruppe im Roblox-Engine entspricht einem einzelnen starren Körper. Die Position und Geschwindigkeit jedes starren Körpers beschreiben, wo er sich befindet und wie schnell er sich bewegt, und eine der Hauptaufgaben der Engine besteht darin, die Positionen und Geschwindigkeiten jeder Baugruppe zu aktualisieren.

Baugruppen können mit mechanischen Einschränkungen und Bewegungseinschränkungen verbunden werden, um Mechanismen wie Autos oder Flugzeuge zu bilden. Wenn die Anzahl der Baugruppen und Einschränkungen in einem Mechanismus zunimmt, erhöht sich auch die Zeit, die benötigt wird, um den Mechanismus zu simulieren. Glücklicherweise wird dieser Anstieg ausgeglichen, wenn das Schlafsystem feststellt, dass die Engine die Simulation von nicht bewegenden Baugruppen überspringen kann.

Schlafzustände

Jede Baugruppe kann sich in einem von drei Zuständen befinden: wach, schlafend oder Schlafprüfung.

Wach

Eine wache Baugruppe bewegt sich oder beschleunigt und wird daher simuliert. Baugruppen gelangen in diesen Zustand aus Situationen, die in schlafend und Schlafprüfung beschrieben sind, sowie aus zusätzlichen Wachsituationen.

Schlafend

Eine schlafende Baugruppe bewegt sich weder noch beschleunigt sie und wird daher nicht simuliert.

Eine Baugruppe wird als nicht bewegend angesehen, indem ihre lineare Geschwindigkeit und rotatorische Geschwindigkeit überprüft werden. Wenn ihre lineare Geschwindigkeit unter dem Linearen Geschwindigkeits Schwellenwert liegt und ihre rotatorische Geschwindigkeit unter dem Rotatorischen Geschwindigkeits Schwellenwert liegt, wird die Baugruppe als nicht bewegend betrachtet.

In einigen Fällen würde eine einfache Überprüfung auf Nichtbewegung dazu führen, dass eine Baugruppe fälschlicherweise in den schlafenden Zustand übergeht. Wenn beispielsweise ein Ball gerade nach oben geworfen wird, nähert sich seine Geschwindigkeit null, wenn er seine maximale Höhe erreicht, was ihn zu einem Kandidaten macht, um zu schlafen und niemals wieder herunterzufallen. Um solche Fälle zu behandeln, betrachtet die Engine eine Baugruppe als beschleunigend, wenn ihre lineare Beschleunigung oder rotatorische Beschleunigung die Lineare Beschleunigung und Rotatorische Beschleunigung Schwellenwerte überschreiten, und verhindert, dass die Baugruppe einschläft.

Schlafprüfung

Eine nicht bewegende Baugruppe, die eine Einschränkung mit mindestens einer wachen Nachbarbaugruppe teilt, wird in den Schlafprüfungs-Zustand versetzt und nicht simuliert. Bei jedem Welt-Schritt überprüft eine schlafprüfende Baugruppe, ob:

Wenn eine dieser Bedingungen wahr ist oder unter einer der zusätzlichen Wachsituationen, wechselt die schlafprüfende Baugruppe in den wachen Zustand.

Schwellenwertreferenz

Die folgende Tabelle bietet die verschiedenen Geschwindigkeits- und Beschleunigungsschwellenwerte, die verwendet werden, um zu bestimmen, ob eine Baugruppe sich bewegt oder beschleunigt.

SchwellenwertWertZustandsänderung
Lineare Geschwindigkeit0.33 studs/swach ⟩ schlafend
Rotatorische Geschwindigkeit0.42 studs/swach ⟩ schlafend
Lineare Beschleunigung0.24 studs/s²wach ⟩ schlafend
Rotatorische Beschleunigung0.24 studs/s²wach ⟩ schlafend
Nachbar Lineare Geschwindigkeit0.48 studs/sSchlafprüfung ⟩ wach
Nachbar Rotatorische Geschwindigkeit0.59 studs/sSchlafprüfung ⟩ wach
Wach Lineare Beschleunigung16.9 studs/s²wach ⟩ schlafend
Wach Rotatorische Beschleunigung16.9 studs/s²wach ⟩ schlafend

Die rotatorischen Geschwindigkeits- und Beschleunigungsschwellenwerte spiegeln die Geschwindigkeit und Beschleunigung eines Punktes wider, der sich auf der Begrenzungssphäre der Baugruppe befindet (eine Kugel, die alle Teile in einer Baugruppe enthält) und sich starr mit der Baugruppe bewegt.

Aktuierte Gelenke

Manchmal möchten Entwickler Teile sehr langsam mit einem aktuierenden Gelenk bewegen, einer Einschränkung, die Kraft oder Bewegung anwendet, um verbundene Teile zu bewegen, wie z.B. ein HingeConstraint, das einen Motor verwendet. Um diese Szenarien zu unterstützen, verwenden Baugruppen, die mit aktuierten Gelenken verbunden sind, einen strengeren Schlafgeschwindigkeitsschwellenwert. Dies verzögert, wann diese Baugruppen einschlafen, und ermöglicht langsame, kontrollierte Bewegungen, ohne dass das Physiksystem sie vorzeitig schlafen legt.

Die folgenden werden als aktuierte Gelenke betrachtet:

Zusätzliche Wachsituationen

Neben den in Schlafprüfung und schlafend beschriebenen Situationen wechselt eine Baugruppe in den wachen Zustand, wenn:

Debug-Visualisierung

Während des Spieltests können Sie die Schlafzustände der Baugruppen visualisieren, indem Sie Wache Teile im Visualisierungs Optionen Widget in der oberen rechten Ecke des 3D-Ansichtsfensters aktivieren.

Eine Nahaufnahme des 3D-Ansichtsfensters mit dem Visualisierungsoptionen-Button, der in der oberen rechten Ecke angezeigt wird.

Sobald aktiviert, werden simulierte Teile durch ihren aktuellen Schlafzustand umrandet, wobei wache Teile in Rot, Schlafprüfung Teile in Orange und schlafende Teile nicht umrandet sind.

Simulierte Teile, umrandet durch die Farbe, die ihren aktuellen Schlafzustand darstellt
©2026 Roblox Corporation. Roblox, das Roblox-Logo und "Powering Imagination" gehören zu unseren eingetragenen und nicht eingetragenen Markenzeichen in den USA und anderen Ländern.