System ślafu

*Ta zawartość została przetłumaczona przy użyciu narzędzi AI (w wersji beta) i może zawierać błędy. Aby wyświetlić tę stronę w języku angielskim, kliknij tutaj.

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 proguWartośćZmiana stanu
Przesunięcie sąsiada0.01 szpilkisprawdzanie snuprzebudzenie
Prędkość liniowa sąsiada0,2 szpilki/ssprawdzanie snuprzebudzenie
Prędkość kątowa sąsiada0,2 radianów/ssprawdzanie snuprzebudzenie
Przesunięcie0.001 szpilkiśpibudzi się
Prędkość liniowa0,1 szpilki/sśpibudzi się
Prędkość kątowa0,1 radianów/sśpibudzi się

Dodatkowe sytuacje przebudzenia

Oprócz sytuacji opisanych w kontroli snu i spaniu, zgromadzenie wchodzi w stan budzenia się, gdy:

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.

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

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.

Symulowane części obrysowane przez kolor reprezentujący ich obecny stan snu