Każda konstrukcja w silniku Roblox odpowiada na pojedynczą trudną ciało . Pozycja i prędkość każdego trudnego ciała opisują, gdzie jest lokalizowane i jak szybko się porusza, a jedną z głównych zadań silnika jest aktualizacja pozycji i prędkości każdej konstrukcji.
Assemblies można połączyć ze sobą za pomocą ograniczeń mechanicznych i ograniczeń mover, aby tworzyć mechanizmy, takie jak samochody lub samoloty. Im więcej assemblies i ograniczeń w mechanizmie, tym dłużej czas potrzebny do symulacji mechanizmu zwiększa się. Szczęśliwie, ten wzrost jest kompensatą, gdy
Stany snu
Każda wersja może być w jednym z trzech stanów: budzi się, śpi sprawdza lub śpi.
Obudzony
Podczas budowy budzi się zbiórka, a więc jest ona symulowana. Zbiórki wchodzą w ten stan z sytuacji opisanych w sprawdzaniu snu i śnie, a także 0>dodatkowych sytuacji budzenia0>.
Sprawdzanie stanu snu
Nieprzenośna złożoność, która dzieli ograniczenie z co najmniej jedną budzącą się sąsiadującą zabudową, jest umieszczona w stanie sprawdzenia snu i nie jest symulowana. Na każdym kroku świata sprawdza się sprawdzenie snu, aby sprawdzić, czy:
- Przybliżenie pozycji sąsiada jest większe niż próg Sąsiedztwa Dysproporcjonalnego.
- Wynik przyspieszenia i rozmiar kątowych prędkości są większe niż prędkości kątowej sąsiada i/lub 2>linii prędkości sąsiada2>.
Jeśli jedna z tych warunków jest prawdziwa lub w dowolnej z dodatkowych sytuacji budzenia się, zasada sprawdzania snu wchodzi w stan budzi się.
Śpiące
A śpiąca zgromadzenie nie przesuwa się ani nie przyspiesza, więc nie jest więc simulowane.
Zwrotka zostanie uznana za nieruchomą, sprawdzając jej pozycjiowe odchylenie, obliczone jako maksymalne odchylenie od przeciętnej pozycji punktu najbliżej jego centrum masowego w najnowszym zestawie kroków świata. Jeśli ten odchylenie jest większy niż próg przerysowania, zwrotka wchodzi w stan budzi się.
W niektórych przypadkach po prostu sprawdzając nieuchronne przesunięcie, powoduje to, że zgromadzenie wchodzi nieprawidłowo do stanu snu. Na przykład, jeśli kula jest rzucona prosto w górę, jej pozycja prawie się nie zmienia dla wielu kroków w czasie, gdy dochodzi do maksym
Odnośnik próg
Poniższy tabela dostarcza różne próg przesunięcia i prędkości używanych do określenia, czy konstrukcja się porusza lub przyspiesza.
Progi | Wartość | Zmiana stanu |
---|---|---|
Odległość sąsiada | 0,01 cali | sprawdzanie snu >, budzi się |
Prędkość liniowa sąsiada | 0,2 kg/s | sprawdzanie snu >, budzi się |
Prędkość kątowa sąsiada | 0,2 radiansy/s | sprawdzanie snu >, budzi się |
Odległość | 0,001 cali | śpi >, budzi się |
Prędkość liniowa | 0,1 cali/s | śpi >, budzi się |
Prędkość kątowa | 0,1 radiansy/s | śpi >, budzi się |
Dodatkowe sytuacje budzenia
Oprócz sytuacji opisanych w czujniku snu i śnie, zbiórka wchodzi w stan budzi się, gdy:
Kolizuje z inną załadunką.
Dowolna fizycznie związana własność dowolnego BasePart w zmianach zestawienia, w tym:
Nie zero impuls jest stosowany do dowolnego BasePart w zestawie za pośrednictwem ApplyImpulse() , ApplyImpulseAtPosition() lub 1> Class.BasePart:ApplyAngularImpulse()|ApplyAngularImpulse()1> .
Każde zmiany związane z fizyką na Workspace , które mogłyby wpływać na złożenie, w tym:
Nowy Constraint jest tworzony z Attachment , które jest związane z BasePart w zestawie.
Wszystkie zmiany właściwości dla Constraint z Attachment , które są podzespołem BasePart w zgromadzeniu.
Zmiany właściwości CurrentAngle dla Motor połączonego z BasePart w zestawie.
Zestaw zawiera VehicleSeat z postacią gracza siedzącego.
Montaż jest w BlastRadius``Class.Explosion .
Wizualizacja debugowania
Podczas testu gry możesz zobaczyć stany snu złożenia, przełączając na Budzi się części z wtyczki Opcje wizualizacji w górnym, prawym rogu 3D.
Po włączeniu, simulowane części zostaną opisane przez ich obecny stan snu, z budzi się częściami opisowymi w czerwieniu, sprawdzanie snu częściami opisowymi w pomarańczu i śpią częściami nieopisowanymi.