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.
Schwellenwert | Wert | Zustandsänderung |
---|---|---|
Nachbarschaft-Versatz | 0,01 klötze | schlaf-checking >, wake-up |
Nachbar-Liniengeschwindigkeit | 0,2 klötze/s | schlaf-checking >, wake-up |
Nachbarn-Angular-Geschwindigkeit | 0,2 radian/s | schlaf-checking >, wake-up |
Versetzung | 0,001 klötze | schläft >, wach ist |
Linische Geschwindigkeit | 0,1 klötze/s | schläft >, wach ist |
Winkelgeschwindigkeit | 0,1 radian/s | schläft >, wach ist |
Zusätzliche Wake-Situationen
Neben Situationen, die in sleep-checking und sleep beschrieben sind, betritt eine Montagemaschine den wachen Zustand, wenn:
Es kollidiert mit einer anderen Montagemaschine.
Jede physikalisch verwandte Eigenschaft eines BasePart innerhalb der Montage-Änderungen, einschließlich:
Ein nicht nullimer Impuls wird auf jeden BasePart innerhalb der Montage über ApplyImpulse() , ApplyImpulseAtPosition() oder 1> Class.BasePart:ApplyAngularImpulseAtPosition()|ApplyAngularImpulse()1> angewendet.
Jede physikalisch verwandte Eigenschaftsänderung auf der Workspace, die die Montagemaschine beeinflussen würde, einschließlich:
Ein neuer Constraint wird mit einem Attachment erstellt, das in einer BasePart innerhalb der Montagemaschine übergeordnet ist.
Alle Eigenschaftsänderungen für eine Constraint mit einem Attachment , das der Eltern BasePart innerhalb derAssembly ist.
Die CurrentAngle Eigenschaft ändert sich für ein Motor , das mit einem BasePart innerhalb der Montagemaschine verbunden ist.
Die Montagemaschine enthält ein VehicleSeat mit einem sitzenden Spieler.
Die Montagemaschine ist innerhalb der BlastRadius eines Explosion .
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.
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.