Każda złożenie w Roblox Engine odpowiada pojedynczemu sztywnemu ciału .Pozycja i prędkość każdego sztywnego ciała opisują, gdzie się znajduje i jak szybko się porusza, a jednym z głównych zadań silnika jest aktualizowanie pozycji i prędkości każdej zbiórki.
Zbiórki mogą być połączone z ograniczeniami mechanicznymi i ograniczeniami przenośników w celu utworzenia mechanizmów takich jak samochody lub samoloty.W miarę wzrostu liczby zespołów i ograniczeń w mechanizmie czas potrzebny do symulacji mechanizmu również wzrasta.Szczęśliwie, ten wzrost jest odręczony, gdy system śleep określa, że silnik może pominąć symulację nieprzesuwanych zespołów.
Stany snu
Każde złożenie może być w jednym z trzech stanów: budzenie się, weryfikacja snu lub śpij.
Obudzony
Zbudowanie budzące się składa się w ruch lub przyspiesza i jest zatem symulowane.Zbiórki wchodzą w ten stan z sytuacji opisanych w kontroli snu i spaniu, a także dodatkowych sytuacjach przebudzenia.
Sprawdzanie snu
Nieprzesuwana zbiórka, która dzieli ograniczenie z co najmniej jedną budzącą się sąsiednią zbiórką, jest umieszczona w stanie weryfikacji snu i nie jest symulowana.Na każdym kroku świata zbiór weryfikujący sen sprawdza, czy:
- Odchylenie pozycji sąsiedniej kolekcji jest większe niż próg przesunięcia sąsiada .
- Produkt przyspieszenia sąsiedniej kolekcji i obecny rozmiar czasu jest większy niż próg Neighbor Angular Velocity i/lub Neighbor Linear Velocity .
Jeśli którekolwiek z tych warunków jest prawdą, lub w ramach któregokolwiek z dodatkowych sytuacji obudzenia, zbiór weryfikacji snu wchodzi w stan budzenia.
Śpij
Zbiór śpijący nie porusza się ani nie przyspiesza i dlatego nie jest symulowany.
Zbiór jest określony jako nieprzesuwalny, sprawdzając jego odchylenie pozycji , obliczone jako maksymalna odchyłka od średniej pozycji punktu najbardziej oddalonego od jego centrum masy w najnowszym zestawie światowych kroków.Jeśli ta odchylenie jest większa niż próg przesunięcia, zgromadzenie wchodzi w stan budzienia się.
W niektórych przypadkach po prostu sprawdzanie bez ruchu spowodowałoby, że złożenie wejdzie nieprawidłowo w stan spania.Na przykład, jeśli piłka jest rzucona prosto w górę, jej pozycja ledwo zmienia się na kilka kroków światowych, gdy zbliża się do maksymalnej wysokości, czyniąc ją kandydatem do snu i nigdy nie spadając z powrotem.Aby obsłużyć takie przypadki, silnik monitoruje, czy produkt prędkości akceleracji i obecny rozmiar czasu przekracza próg prędkości liniowej i/lub prędkości kątowej.
Próg referencyjny
Poniższa tabela przedstawia różne progi przesunięcia i prędkości używane do określenia, czy złożenie się porusza lub przyspiesza.
Próg progu | Wartość | Zmiana stanu |
---|---|---|
Przesunięcie sąsiada | 0.01 szpilki | sprawdzanie snu ⟩ przebudzenie |
Prędkość liniowa sąsiada | 0,2 szpilki/s | sprawdzanie snu ⟩ przebudzenie |
Prędkość kątowa sąsiada | 0,2 radianów/s | sprawdzanie snu ⟩ przebudzenie |
Przesunięcie | 0.001 szpilki | śpi ⟩ budzi się |
Prędkość liniowa | 0,1 szpilki/s | śpi ⟩ budzi się |
Prędkość kątowa | 0,1 radianów/s | śpi ⟩ budzi się |
Dodatkowe sytuacje przebudzenia
Oprócz sytuacji opisanych w kontroli snu i spaniu, zgromadzenie wchodzi w stan budzenia się, gdy:
Konfliktuje się z inną kolekcją.
Każda właściwość związana z fizyką w dowolnej BasePart wewnątrz zbioru zmian, w tym:
Impuls niezerowy jest zastosowany do dowolnego BasePart w obrębie złożenia za pomocą ApplyImpulse() , ApplyImpulseAtPosition() lub ApplyAngularImpulse() .
Wszelkie zmiany właściwości związane z fizyką na Workspace, które wpłynęłyby na złożenie, w tym:
Nowy Constraint jest tworzony z Attachment który jest powiązany z BasePart w obrębie złożenia.
Wszelkie zmiany właściwości dla Constraint z właściwością Attachment, która jest powiązana z BasePart w obrębie złożenia.
Zmiany właściwości CurrentAngle dla Motor, które są połączone z BasePart w ramach złożenia.
Zbiór zawiera VehicleSeat z siedzącą postacią gracza.
Zgromadzenie znajduje się w BlastRadius z Explosion .
Debugowanie wizualizacji
Podczas testowania gry możesz wizualizować stany snu złożenia, przełączając budzęce części z widgetem Opcje wizualizacji w prawym górnym rogu widoku 3D.

Po włączeniu symulowane części zostaną opisane ich obecnym stanem snu, z budzącymi się częściami wymienionymi w czerwieni, weryfikującymi sn częściami wymienionymi w pomarańczu i śpiącymi częściami bez wyznaczenia.