Jede Montagemaschine in der Roblox-Engine entspricht einem einzigen steifen Körper .Die Position und Geschwindigkeit jedes steifen Körpers beschreibt, wo er sich befindet und wie schnell er sich bewegt, und eine der Hauptaufgaben der MotorEngine ist es, die Positionen und Geschwindigkeiten jedes Bausatzes zu aktualisieren.
Zusammenhänge können mit mechanischen Einschränkungen und Bewegungseinschränkungen verbunden werden, um Mechanismen wie Autos oder Flugzeuge zu bilden.Je mehr Assemblies und Einschränkungen in einem Mechanismus zunehmen, desto mehr Zeit wird zur Simulation des Mechanismus benötigt.Glücklicherweise wird diese Erhöhung ausgeglichen, wenn das Schlafsystem feststellt, dass die Engine die Simulation von nicht bewegenden Montagemaschinen überspringen kann.
Schlafzustände
Jede Zusammenstellung kann in einem von drei Zuständen sein: wach, Schlafprüfung oder schlafen.
Wach
Eine wache Montagemaschine bewegt sich oder beschleunigt sich und wird daher simuliert.Versammlungen gelangen in diesen Zustand aus Situationen, die in Schlafüberprüfung und Schlafen beschrieben sind, sowie zusätzliche Wachsituationen.
Schlaf-Checking
Eine nicht bewegliche Montagemaschine, die eine Einschränkung mit mindestens einer wachen benachbarten Montagemaschine teilt, wird in den Schlafüberprüfungs -Zustand versetzt und nicht simuliert.Bei jedem Weltenschritt prüft eine Schlafüberwachungs-Assembly, ob:
- Die Positionsabweichung einer benachbarten Montagemaschine ist größer als der Nachbarversatz-Schwelle.
- Die Produktivität der Beschleunigung einer benachbarten Montagemaschine und der aktuellen Zeitstufengröße ist größer als die Nachbar-Angular-Geschwindigkeit und/oder Nachbar-Lineargeschwindigkeit Schwelle.
Wenn eine dieser Bedingungen wahr ist oder eine der zusätzlichen Wachsituationen vorliegt, tritt die Schlafprüfungsversammlung in den Wachzustand ein.
Schlafen
Eine schlafende Montagemaschine bewegt sich nicht oder beschleunigt nicht und wird daher nicht simuliert.
Eine Montagemaschine wird als nicht bewegbar bestimmt, indem ihre Positionabweichung überprüft wird, die als die maximale Abweichung von der durchschnittlichen Position des Punkts am weitesten von seinem Schwerpunkt über die jüngste Reihe von Weltstufen berechnet wird.Wenn diese Abweichung größer als die Verschiebungsschwelle ist, geht die Montagemaschine in den Wachzustand über.
In einigen Fällen würde die einfache Überprüfung auf Nichtbewegung dazu führen, dass eine Montagemaschine den Schlafzustand falsch betritt.Wenn zum Beispiel ein Ball direkt nach oben geworfen wird, ändert sich seine Position kaum für eine Reihe von Weltschritten, wenn er seine maximale Höhe erreicht, was ihn zu einem Kandidaten macht, der nie wieder herunterfällt.Um solche Fälle zu bewältigen, überwacht die Engine, ob das Produkt der Beschleunigung und der aktuellen Zeitspanne der Montagemaschine die lineare Geschwindigkeit und/oder die anguläre Geschwindigkeit Schwellenwerte überschreitet.
Schwellenwert-Referenz
Die folgende Tabelle gibt die verschiedenen Verschiebungs- und Geschwindigkeitsgrenzen an, die verwendet werden, um zu bestimmen, ob eine Montagemaschine sich bewegt oder beschleunigt.
Schwelle | Wert | Zustandsänderung |
---|---|---|
Nachbarvertreibung | 0.01 klötze | schlaf-check ⟩ wach |
Nachbarlineare Geschwindigkeit | 0,2 steine/sekunde | schlaf-check ⟩ wach |
Nachbar-Angulargeschwindigkeit | 0,2 radian/sekunde | schlaf-check ⟩ wach |
Versatz | 0.001 klötze | schlafen ⟩ wach |
Lineare Geschwindigkeit | 0,1 stollen/sekunde | schlafen ⟩ wach |
Winkelgeschwindigkeit | 0,1 radian/sekunde | schlafen ⟩ wach |
Zusätzliche Wecklagen
Zusätzlich zu den Situationen, die in Schlafüberprüfung und Schlafen beschrieben sind, betritt eine Zusammenstellung den wachen Zustand, wenn:
Es kollidiert mit einer anderen Montagemaschine.
Jede physikbezogene Eigenschaft von jedem BasePart innerhalb der Montageänderungen, einschließlich:
Ein nicht Null-Impuls wird auf jede BasePart innerhalb der Montagemaschine über ApplyImpulse() , ApplyImpulseAtPosition() oder ApplyAngularImpulse() angelegt.
Alle physikbezogenen Eigenschaftsänderungen auf der Workspace, die sich auf die Montagemaschine auswirken würden, einschließlich:
Ein neues Constraint wird mit einem Attachment erstellt, das einem BasePart innerhalb der Montagemaschine zugewiesen ist.
Alle Eigenschaftsänderungen für ein Constraint mit einem Attachment, das einem BasePart innerhalb der Montagemaschine zugewiesen ist.
Die CurrentAngle Eigenschaft ändert sich für ein Motor, das mit einer BasePart innerhalb der Montagemaschine verbunden ist.
Die Montagemaschine enthält ein VehicleSeat mit einem sitzenden Spielercharakter.
Die Montagemaschine befindet sich innerhalb der BlastRadius eines Explosion.
Debug-Visualisierung
Während des Spieltests kannst du Montageschlafzustände visualisieren, indem du auf Awake-Teile im Widget Visuelle Optionen in der oberen rechten Ecke des 3D-Ansichtsfensters umschaltest.

Sobald aktiviert, werden simulierte Teile durch ihren aktuellen Schlafzustand umrissen, mit wachen Teilen in Rot, Schlafüberprüfung Teilen in Orange und schlafenden Teilen ohne Umriss.