Udostępnij za pośrednictwem


Przewodnik programisty fizyki siatki

Ogólne porady

Możesz zacząć od skanowania dokumentacji fizyki aparatu Unity. Istnieje wiele zasobów dostępnych na temat optymalizowania fizyki w środowisku Unity.

Fizyka Mesh wiąże się z dodatkowymi wyzwaniami. Oto kilka wskazówek, które pomogą je przezwyciężyć.

  • Tworzenie grubych ścian: Synchronizacja sieci może nieznacznie przenosić sztywne ciała. W rezultacie zobaczysz dodatkową penetrację między obiektami. Małe dynamiczne ciała mogą być wypychane przez cienkie ściany. W przypadku grubszych obiektów i ścian te efekty tunelowania są mniej prawdopodobne. Jeśli to możliwe, użyj wypukłego kadłuba lub małego zestawu wypukłych kadłubów dla korpusów dynamicznych.

  • Jeśli to możliwe, użyj grubych wypukłych elementów do geometrii statycznej. Staraj się unikać siateczek, szczególnie bardzo gęstych siatk.

  • Realistyczne masy w kg: Zawartość z różnych źródeł może wchodzić w interakcje w tej samej scenie. Sprawdza się to, jeśli proporcje masy między obiektami są uzasadnione. Dobrym punktem wyjścia jest przypisanie realistycznych mas do ciał przy użyciu kg.

Opracowywanie rozszerzonej zawartości fizyki siatki

Animacje autoodtwórz

Możesz dodawać animacje autoodtwarzania do sceny, która współdziała z ciałami fizyki. Te animacje są automatycznie synchronizowane między klientami przez tymczasowe dostosowanie szybkości odtwarzania (spowolnienie ich lub przyspieszenie) na każdym kliencie, dopóki wszyscy klienci nie będą w tym samym stanie animacji w tym samym czasie.

Ustawienia

  • Odtwórz automatycznie .
  • Animowanie fizyki zalecane (ale nie jest wymagane), jeśli animacja wpływa na zderzacze, które wchodzą w interakcje z ciałami fizyki.
  • Typ culling ustawiony na wartość "Always Animowanie" (automatycznie wymuszane przez fizykę siatki), ponieważ animacja może mieć wpływ na ciała fizyki, nawet gdy są poza ekranem.

Zrzut ekranu przedstawiający ustawienia składnika Animacja w inspektorze.

Klip animacji używany przez animację autoodtwarzania może używać dowolnego trybu zawijania. Przydatne opcje to "Loop" i "Ping Pong".

Zrzut ekranu przedstawiający ustawienia elementu zawartości Klip animacji w inspektorze.

Składniki

Dodanie jednego z poniższych MonoBehaviour składników do obiektu spowoduje dodanie określonego zachowania do tego obiektu.

Sticky Body

Sprawia, że ciała trzymają się innych ciał. Może służyć do rzucania rzutkami na inne ciała lub do dołączania zdjęcia na ścianie. Jest to realizowane przez utworzenie stałego ograniczenia między dwoma zaangażowanymi ciałami. Uwaga: Ta operacja jest wykonywana na wszystkich klientach i dlatego jest implementowana jako specjalny komunikat sieciowy.

Zrzut ekranu przedstawiający opcje skryptu Sticky Body w inspektorze.

Ustawienia

  • Stick: Określa, czy ciało będzie trzymać się dynamicznych lub/i statycznych ciał.
  • Kiedy: Czasami chcesz trzymać szybkie ciało, gdy po prostu dotyka innego ciała, a czasami chcesz trzymać ciało, gdy jest trzymany na innym ciele przez dany czas, jak oczekiwanie na klej utwardzić, gdy przyklejasz przycisk na ścianie.
  • Kontrola kolizji Aby wyłączyć konkretne kolizje między jednym ciałem a drugim. Zwykle można/należy używać warstw kolizji. Jednak ze względu na to, że w usłudze Microsoft Mesh istnieje tylko 32 zakodowane warstwy kolizji, może to nie być opcja. W tym miejscu można wyłączyć określone jednostki.
  • Affected Body For Collision Body filter applied for Collision Control (Affected Body For Collision Body filter applied for Collision Control).

Pole zawierania

Zapewnia, że sztywne ciała pozostają w granicach jednego lub kilku zderzaków wyzwalaczy.

Zrzut ekranu przedstawiający opcje skryptu Pola zawierania w inspektorze.

Aby ten składnik działał, musi być dołączony do jednego lub kilku zderzaków wyzwalacza. (Te zderzacze wyzwalaczy można również zagnieżdżać w hierarchii transformacji poniżej GameObject tego składnika, który ma dołączony ten składnik).

Sztywne elementy, których dotyczy ten składnik, muszą już znajdować się w granicach zderzaków wyzwalacza ("wolumin wyzwalacza") po uruchomieniu sceny. Środek masy każdego z tych sztywnych ciał będzie następnie ograniczony, aby pozostać w granicach objętości wyzwalacza — nie będzie można wyciągnąć ani w inny sposób przenieść centrów masy tych sztywnych ciał w dowolnym miejscu na zewnątrz.

Ustawienia:

  • Maksymalne odchylenie od zawierania pozwala na środek masy dotkniętej sztywnej części, aby nieznacznie wyjść poza woluminy wyzwalacza, zanim zatrzasnie się z powrotem. Jest to kompromis optymalizacji wydajności: jeśli dozwolone maksymalne odchylenie jest duże, treść może wyraźnie pozostawić wolumin wyzwalacza i przyciągnąć z powrotem, ale kod może uniknąć konieczności sprawdzania i weryfikowania położenia treści bardzo często, gdy jest on wypoczęty lub porusza się powoli wewnątrz woluminu wyzwalacza.

  • Obiekty, których dotyczy problem , definiują opcjonalne warunki filtrowania dla ciał, których dotyczy ten składnik. (Domyślnie dotyczy to wszystkich ciał).

Pole wektora prędkości

Pozwala przyspieszyć/zwolnić sztywną część, dopóki nie osiągnie określonej prędkości docelowej.

Zrzut ekranu przedstawiający opcje skryptu Directional Velocity Field w inspektorze.

Ten składnik kontroluje zarówno wielkość, jak i kierunek prędkości. Zobacz Pole wielkości prędkości, aby kontrolować tylko wielkość i Prędkość Kierunek Pola , aby kontrolować tylko kierunek. Istnieją dwa tryby operacji:

  • Jeśli jest przymocowany do sztywnej osoby, ta sztywna osoba będzie kontrolowana.
  • Jeśli zostanie dołączony do zderzacza wyzwalacza, wszystkie sztywne ciała wchodzące w ten wolumin wyzwalacza będą miały wpływ.

Ustawienia:

  • Typ prędkości określa, czy pracujemy nad szybkością liniową, czy kątową.
  • Kierunek w przestrzeni lokalnej określa, czy prędkość docelowa jest określona w lokalnej przestrzeni obiektu, do którego jest dołączony składnik.
  • Prędkość docelowa ustawia żądany wektor prędkości w metrach/sekundach (lub radianach/sekundach w przypadku prędkości kątowej).
  • Maksymalne przyspieszenie definiuje maksymalne przyspieszenie stosowane do osiągnięcia prędkości docelowej.
  • Typ przyspieszenia definiuje typ przyspieszenia, aby osiągnąć prędkość docelową.
    • Natychmiastowe osiągnięcie prędkości docelowej natychmiast (tak samo jak przyspieszenie stałe z maksymalnym przyspieszeniem = Nieskończoność).
    • Stałe przyspieszenie zapewni, że ciało osiągnie prędkość docelową niezależnie od tego, co mieści się w granicach ustawienia Maksymalne przyspieszenie .
    • Smooth Approach zmniejsza przyspieszenie, im bliżej osiągasz prędkość docelową. Oznacza to, że w praktyce nigdy nie osiągniesz prędkości docelowej. Ponadto, jeśli istnieją jakiekolwiek wpływy zewnętrzne, takie jak pod górę lub w dół, ten dodatkowy wpływ nie będzie całkowicie przesłonięć, co spowoduje szybsze podjazd niż pod górę.
  • Obiekty, których dotyczy problem , definiują opcjonalne warunki filtrowania dla ciał, których dotyczy ten składnik. (Domyślnie dotyczy to wszystkich ciał).

Pole skalowane grawitacji

Zmienia sposób, w jaki grawitacja wpływa na sztywne ciała w granicach jednego lub kilku zderzaków wyzwalaczy.

Zrzut ekranu przedstawiający opcje skryptu Pola antygrawitacji w inspektorze.

Aby ten składnik działał, musi być dołączony do jednego lub kilku zderzaków wyzwalacza. (Te zderzniki wyzwalaczy można również zagnieżdżać w hierarchii przekształcania poniżej obiektu GameObject, który ma dołączony ten składnik).

Wszelkie sztywne ciała, które dotykają lub nakładają się zderzacze wyzwalacza (objętość wyzwalacza) zachowują się zgodnie z ustawieniami grawitacji tego składnika, a nie globalną grawitacją fizyki. Sztywne jednostki, które mają wyłączone użycie grawitacji , są ignorowane.

Istnieje interesująca relacja między postrzeganiem własnego rozmiaru gracza na świecie a grawitacją:

  • Jeśli grawitacja jest mniejsza niż to, do czego jesteśmy przyzwyczajeni (obiekty są wolniejsze, gdy spadną), gracz postrzega się jako większy - jak gigantyczny.
  • Jeśli grawitacja jest większa niż to, do czego jesteśmy przyzwyczajeni (obiekty są szybsze, gdy spadną), gracz postrzega się jako mniejszy — jak mysz.

Ustawienia:

  • Gravity Preset pozwala na wybór kilku interesujących i przydatnych ustawień dla właściwości Skala Grawitacji: różne ciała niebieskie (Księżyc, Mars, Ziemia, Jowisz), bez grawitacji (Przestrzeń Zewnętrzna) lub odwróconej grawitacji (Do góry nogami). Zawsze możesz zastąpić skalę grawitacji dowolną wartością.
  • Skala grawitacji ustawia lokalną grawitację wewnątrz woluminu wyzwalacza w odniesieniu do domyślnej grawitacji fizyki wpływającej na scenę. Domyślna skala grawitacji 1 pozostawia nietkniętą grawitację; większe wartości zwiększają grawitację; 0 usuwa grawitację; wartości ujemne przełączają kierunek grawitacji.
  • Obiekty, których dotyczy problem , definiują opcjonalne warunki filtrowania dla ciał, których dotyczy ten składnik. (Domyślnie dotyczy to wszystkich ciał).

Pole grawitacji orbitalnej

Symuluje powagę "planety toy" w twojej scenie.

Zrzut ekranu przedstawiający opcje skryptu Pole grawitacji w Inspektorze.

Aby ten składnik działał, musi być dołączony do jednego lub kilku zderzaków wyzwalacza. (Te zderzniki wyzwalaczy można również zagnieżdżać w hierarchii przekształcania poniżej obiektu GameObject, który ma dołączony ten składnik).

Wszystkie sztywne ciała, które dotykają lub nakładają się na zderzacze wyzwalacza (głośność wyzwalacza), są ściągane w kierunku położenia obiektu, który ma dołączony ten składnik.

Ustawienia:

  • Grawitacja definiuje wielkość grawitacji. Jest to przyspieszenie orbitujące ciało ("księżyc") w kierunku centralnego ciała w odległości jednego metra. Ponieważ prędkość orbitalna jest kwrt(grawitacja/promień), ta wartość opisuje prędkość księżyca na stabilnej orbicie w promieniu jednego metra.

  • Wyłącz Global Gravity wyłącza globalne ustawienie grawitacji fizyki sceny dla ciał dotkniętych tym składnikiem. Domyślnie globalna grawitacja sceny będzie nadal wpływać na twoją planetę i jej księżyce.

  • Ciała dotknięte definiuje opcjonalne warunki filtrowania ciał, które mogą stać się księżycami w tym polu grawitacji.

  • Force Moons On Circular Orbit to ściągawka, która stosuje pewne delikatne siły, aby wypchnąć księżyc na okrągłą orbitę. Motywacją jest to, że trudno jest ekspertowi ustawić grawitację i początkową prędkość ciała w sposób osiągnięcia orbity cyklicznej. Ponadto, jeśli ta opcja jest włączona, wszystkie księżyce umieszczone wewnątrz pola grawitacji w Edytorze aparatu Unity automatycznie zaczynają krążyć wokół ich centralnego ciała po załadowaniu sceny.

  • Siła wymuszonej orbity skaluje przyspieszenie stosowane w celu wymuszenia księżyca na orbitę cykliczną.

  • Ustaw wymuszony promień, gdzie umieszczone sprawia, że księżyce umieszczone wewnątrz pola grawitacji w Edytorze Aparatu Unity automatycznie przyjmują początkową odległość od centralnego ciała jako preferowaną orbitę.

  • Ustaw wymuszony promień, gdzie porzucone sprawia, że księżyce, które są interaktywnie chwytane i przenoszone do pola grawitacji automatycznie przyjmują odległość od centralnego ciała, w którym zostały one porzucone jako preferowana orbita.

  • Domyślny promień wymuszania definiuje domyślny promień powyższej metody oszukiwania, chyba że zostanie zastąpiony przez dowolną inną opcję.

Pole buoyancy

Symuluje pływalność dowolnych sztywnych ciał na wodzie: Ciała wydają się unosić się na połączonej objętości wyzwalacza.

Zrzut ekranu przedstawiający opcje skryptu Buoyancy Field w inspektorze.

Aby ten składnik działał, musi być dołączony do jednego lub kilku zderzaków wyzwalaczy. (Te zderzniki wyzwalaczy można również zagnieżdżać w hierarchii przekształcania poniżej obiektu GameObject, który ma dołączony ten składnik).

Wszelkie sztywne ciała, które dotykają lub nakładają się na zderzacze wyzwalacza (głośność wyzwalacza), doświadczają sił pęku (upthrust), aby utrzymać je na powierzchni.

Ten składnik używa kształtu zderzaków sztywnego ciała do obliczenia jego gęstości (innymi słowy, objętości podzielonej przez masę), buoyancy, przeciągania i tarcia.

Zderzacze bojówek

Korzyść: wydajność. Koszt obliczeniowy obliczeń pęku skaluje liniowo z liczbą wierzchołków zderzaków. Typowe zderzacze fizyki dla ciał, nawet jeśli już uproszczone, są często znacznie bardziej złożone (pod względem liczby wierzchołków) niż wymaga, aby buoyancy działać wystarczająco dobrze.

Instrukcje: Dodawanie jednego (lub kilku) dodatkowych zderzaków (mogą być wyłączone) do ciała. Oznacz zderzacze jako jawne kadłuby buoyancy, przypisując do nich materiał fizyki o nazwie BuoyancyHull (dokładne znaczenie pisowni!). Szczegóły konfiguracji tego materiału fizycznego nie mają znaczenia - odpowiedni materiał fizyki jest dostarczany z pakietem zestawu narzędzi Mesh. Jeśli ciało ma jakiekolwiek zderzacze oznaczone w ten sposób, tylko te zderzacze są używane do obliczeń bojówek; wszystkie inne zderzacze są ignorowane.

Najlepsze rozwiązania: Jawne zderzacze kadłuba buoyancy do każdego Sztywnego, który może być wrzucony do BuoyancyField. Najlepiej (i najłatwiej) używać zderzaków sześcianu, ponieważ mają najmniejsze wierzchołki (osiem na zderzacz). Dopasowywanie dokładnego kształtu wizualnego ciała bojaźliwego zwykle nie jest wymagane dla dobrego wyniku; bardzo grubsze przybliżenie jest zwykle wystarczające.

Ustawienia:

  • Gęstość to gęstość symulowanego płynu, który "wypełnia" objętość wyzwalacza w kilogramach na metr sześcienny. (Wartość domyślna reprezentuje przybliżoną gęstość wody w temperaturze pokojowej).
  • Typ powierzchni określa, w jaki sposób składnik próbkuje kształt powierzchni wody do obliczania sił pływania.
    • Static Flat zakłada, że powierzchnia wody jest idealnie planarna i nigdy nie przenosi się z początkowej pozycji w scenie. Położenie i orientacja powierzchni wody są określane tylko raz, gdy scena się rozpoczyna. Jest to najtańsza opcja obliczeniowa.
    • Dynamic Flat zakłada, że powierzchnia wody jest idealnie planarna, ale pozwala na to, że może się poruszać (na przykład poziom wody może wzrosnąć lub zatopić). Położenie i orientacja powierzchni wody są określane raz na ramę.
    • Dynamic Flat Per Body obsługuje powierzchnię wody, która nie jest planarna (na przykład może być machająca). Dla każdego sztywnego unoszącego się na powierzchni wody lokalne przybliżenie powierzchni wody pod sztywną częścią jest określane raz na ramę, która jest następnie używana do obliczania sił pływania dla tego sztywnego ciała.
  • Affected Bodies definiuje opcjonalne warunki filtrowania dla ciał, które mogą pływać w tym polu pływania. (Domyślnie wszystkie jednostki kwalifikują się).
  • Przeciągnij steruje oporem ruchu, gdy sztywna osoba uderza w wodę (innymi słowy, tarcia ortogonal na powierzchni ciała).
  • Tarcie skóry kontroluje odporność ruchu, ponieważ sztywna osoba jest przenoszona przez wodę (innymi słowy, tarcie równoległe do powierzchni ciała).

Ważne! Aby umożliwić składnikowi dostęp do sztywnych trójkątów siatki zderzaków, należy zaznaczyć pole wyboru "Odczyt/zapis włączony" w ustawieniach importu siatki zderzaków. W przeciwnym razie ciało zostanie zignorowane przez pole pływania i spadnie przez pole bez wpływu na nie.

Ważne! Upewnij się, że ciała fizyki mają wiarygodne masy, aby upewnić się, że zachowują się zgodnie z oczekiwaniami w polu buoyancy:

  • Jeśli masa sztywnego ciała jest nieprawdopodobnie wysoka w porównaniu z jego objętością, zatopi się na dole.
  • Jeśli masa sztywnego ciała jest nieprawdopodobnie niska w porównaniu z jego objętością (na przykład domyślną jednostką masy aparatu Unity Rigidbody ), będzie po prostu usiąść na szczycie symulowanego płynu.

Domyślnie pole pływania próbkuje powierzchnię objętości wyzwalacza, aby określić kształt powierzchni wody (z uwzględnieniem wybranego ustawienia Typ powierzchni wody). Powierzchnie animowane w pamięci procesora CPU można próbkować w ten sposób, ale powierzchnie animowane przez cieniowanie wierzchołków procesora GPU nie są widoczne dla skryptu w czasie wykonywania. Składnik BuoyancyField udostępnia delegata wywołania zwrotnego dostępnego dla skryptów o nazwie GetDistanceFromSurface , który umożliwia zewnętrznym skryptom dostarczanie informacji o kształcie powierzchni wody animowanej przez procesor GPU.

Zapoznaj się z poniższym składnikiem, BuoyancyFieldWaves aby dowiedzieć się, jak uzyskać falistą powierzchnię wody z podejściem bez kodu.

Fale pola buoyancy

Dodatek do BuoyancyField składnika, który współpracuje z określonym cieniatorem BuoyancyFieldWaves_VertexPosition wierzchołków (dostępny zarówno jako graf podrzędny cieniowania, jak i plik dołączany HLSL). Tworzy to wizualny efekt falistej powierzchni wody wraz z odpowiednim zachowaniem obiektów pływających na powierzchni wody.

Zrzut ekranu przedstawiający opcje skryptu Buoyancy Field Waves w Inspektorze.

Ten składnik musi zostać dodany do obiektu GameObject, który ma BuoyancyField już dodany składnik.

Powierzchnia wody, która ma być animowana, musi być dostarczana jako płaska, tesselowana siatka, której granice są żądanego kształtu powierzchni wody, gdy widać od góry w dół. Materiał używany na powierzchni wody musi używać cieniowania, który zawiera BuoyancyFieldWaves_VertexPosition podcieniętnik, aby określić położenie wierzchołka siatki. Możesz użyć dołączonego materiału przykładowego BasicWavyWaterSurface (i grafu cieniującego o tej samej nazwie) jako punktu wyjścia dla własnego rozwoju cieniowania.

Ustawienia:

  • Moduł renderujący usługi Waves Mesh odwołuje się do MeshRenderer składnika, który renderuje siatkę powierzchni wody.
    • Materiał pokazuje, który materiał jest używany przez program renderer. Dotyczy to tylko informacji.
    • Cieniator pokazuje, który cieniator jest używany przez materiał. Dotyczy to tylko informacji.
  • Nazwy właściwości cieniowania fal definiują nazwy wymaganych właściwości cieniowania, które muszą być uwidocznione przez cieniowanie. Te właściwości są dostępne przez ten składnik w czasie wykonywania, aby upewnić się, że zachowanie pola buoyancy pozostaje zsynchronizowane z wizualizacjami powierzchni wody we wszystkich klientach.
    • Kontrolowany czas skryptu to nazwa uwidocznionej floatwłaściwości cieniowania typu, która będzie stale aktualizowana przez ten składnik przy użyciu stale rosnącego czasu (mierzonego w sekundach), który jest synchronizowany we wszystkich klientach. Cieniowanie BuoyancyFieldWaves_VertexPosition podrzędne używa tego czasu wspólnego do utworzenia wzorca fali, który pozostaje zsynchronizowany na wszystkich klientach i zsynchronizowany z zachowaniem pola buoyancy.
    • Prędkość fali to nazwa uwidocznionej floatwłaściwości cieniowania typu, która określa szybkość bazową, z jaką fale propagują się w poziomie. Wartość właściwości należy ustawić w materiale zastosowanym do siatki powierzchni fali. Ustawienie tej wartości na zero sprawia, że powierzchnia fali staje się statyczna i niewzrusząca.
    • Długość fali to nazwa uwidocznionej floatwłaściwości cieniowania typu, która określa grubość wzorca fali. Wartość właściwości należy ustawić w materiale zastosowanym do siatki powierzchni fali. Mniejsze wartości generują krótkie tętnienia; większe wartości generują długie, zamiatające fale.
    • Wave Height to nazwa uwidocznionej floatwłaściwości cieniowania typu, która określa wysokość podstawową fal. Wartość właściwości należy ustawić w materiale zastosowanym do siatki powierzchni fali. Ustawienie tej wartości na zero sprawia, że powierzchnia fali staje się całkowicie płaska.

Dołączony wykres cieniowania próbki BasicWavyWaterSurface (używany przez materiał o tej samej nazwie) używa wymaganego BuoyancyFieldWaves_VertexPosition cieniowania wierzchołka do produkcji falistej powierzchni 3D, ale obejmuje tylko minimalną implementację stand-in dla cieniowania fragmentów, co sprawia, że renderuje powierzchnię jako nieprzyciemnione, zwykłe, półprzezroczyste siatki.

Zrzut ekranu przedstawiający wykres cieniowania powierzchni wody w warstwie Podstawowa w edytorze cieniowania grafu.

Możesz dostosować ścieżkę fragmentu cieniowania używanego z składnikiem BuoyancyFieldWaves całkowicie do swoich potrzeb. Należy jednak pamiętać, że ścieżka wierzchołka cieniowania używa BuoyancyFieldWaves_VertexPosition grafu cieniowania podrzędnego i uwidacznia cztery dane wejściowe do tego wykresu cieniującego jako floatwłaściwości cieniowania typu ogólnego grafu cieniowania, aby składnik mógł uzyskać do nich dostęp w czasie wykonywania. Jeśli cieniowanie nie powiedzie się uwzględnić wymaganego grafu cieniowania podrzędnego lub jeśli którakolwiek z wymaganych właściwości cieniowania nie zostanie uwidoczniona, inspektor składnika wyświetli komunikat o błędzie w czasie projektowania, a obsługa rzezi nie będzie działać w czasie wykonywania:

Zrzut ekranu przedstawiający opcje skryptu Buoyancy Field Waves z komunikatem o błędzie: Wymagany moduł cieniowania wierzchołka nie jest używany.

Zrzut ekranu przedstawiający opcje skryptu Buoyancy Field Waves z komunikatem o błędzie: właściwość Shader nie jest uwidoczniona przez materiał.

Przykładowy BasicWavyWaterSurface wykres cieniowania może służyć jako stand-in podczas tworzenia zawartości i jako punkt wyjścia dla własnych zmian cieniowania. Alternatywnie możesz podjąć istniejący cień powierzchni wody, zachować ścieżkę fragmentu i zastąpić tylko ścieżkę wierzchołka.

Maksymalna prędkość angular

Zastępuje domyślną maksymalną prędkość kątową ciała fizyki.

Zrzut ekranu przedstawiający opcje skryptu Max Angular Velocity w inspektorze.

Aparat fizyki nie pozwoli sztywnej osobie przekroczyć tę prędkość kątową. Może to być przydatne, aby ograniczyć szybkość rolowania danej sztywnej osoby lub pozwolić mu wrócić szybciej niż domyślna fizyka, czyli 50 radianów na sekundę (około 8 rewolucji na sekundę).

Maksymalna prędkość kątowa musi być wprowadzana w radianach na sekundę. Wprowadzona wartość jest również wyświetlana w stopniach na sekundę (180 stopni ≈ 3,14 radianów) i rewolucji na sekundę (1 rewolucja = 360 stopni ≈ 6,28 radianów).

Pole wielkości prędkości

Umożliwia przyspieszenie/zwalnianie sztywnego ciała, dopóki nie osiągnie prędkości, która znajduje się w dopuszczalnym zakresie.

Zrzut ekranu przedstawiający opcje skryptu Velocity Field w inspektorze.

Ten składnik kontroluje wielkość prędkości i utrzymuje bieżący kierunek. Jeśli obiekt będzie nadal, wybiera losowy kierunek dla czasu trwania jednej ramki. Istnieją dwa tryby operacji:

  • Jeśli jest przymocowany do sztywnej osoby, ta sztywna osoba będzie kontrolowana.
  • Jeśli zostanie dołączony do zderzacza wyzwalacza, wszystkie sztywne ciała wchodzące w ten wolumin wyzwalacza będą miały wpływ.

Ustawienia:

  • Typ prędkości określa, czy pracujemy nad szybkością liniową, czy kątową.
  • Limity prędkości określają żądane limity minimalnej i maksymalnej prędkości w metrach/sekundach (lub radianach/sekundach w przypadku prędkości kątowej). Jeśli bieżąca prędkość jest niższa niż minimalna, przyspieszy, jeśli jest więcej niż maksymalna, ciało będzie zwalniać. Jeśli bieżąca prędkość mieści się już w granicach, skrypt nie ma żadnego wpływu. Aby ustawić określoną szybkość docelową, ustaw wartość minimalną i maksymalną na tę samą wartość.
  • Maksymalne przyspieszenie definiuje maksymalne przyspieszenie stosowane do osiągnięcia prędkości docelowej.
  • Typ przyspieszenia definiuje typ przyspieszenia, aby osiągnąć prędkość docelową.
    • Natychmiastowe osiągnięcie limitu prędkości natychmiast (takie samo jak przyspieszenie stałe z maksymalnym przyspieszeniem = Nieskończoność).
    • Stałe przyspieszenie zapewni, że ciało osiągnie prędkość docelową niezależnie od tego, co mieści się w granicach ustawienia Maksymalne przyspieszenie .
    • Smooth Approach zmniejsza przyspieszenie, im bliżej osiągasz prędkość docelową. Oznacza to, że w praktyce nigdy nie osiągniesz prędkości docelowej. Ponadto, jeśli istnieją jakiekolwiek wpływy zewnętrzne, takie jak pod górę lub w dół, ten dodatkowy wpływ nie będzie całkowicie przesłonięć, co spowoduje szybsze podjazd niż pod górę.
  • Obiekty, których dotyczy problem , definiują opcjonalne warunki filtrowania dla ciał, których dotyczy ten składnik. (Domyślnie dotyczy to wszystkich ciał).

Wyrównaj pole

Wyrównuje treść do określonej osi.

Zrzut ekranu przedstawiający opcje wyrównania pola w inspektorze.

Ten składnik dodaje moment obrotowy do ciała, aby wyrównać go do określonego kierunku. Należy pamiętać, że moment obrotowy jest zawsze stosowany w kierunku, który obraca ciało w kierunku docelowym. Istnieją dwa tryby operacji:

  • Jeśli jest przymocowany do sztywnej osoby, ta sztywna osoba zostanie wyrównana.
  • W przypadku dołączeń do zderzacza wyzwalacza wszystkie sztywne ciała wchodzące w ten wolumin wyzwalacza zostaną wyrównane.

Ustawienia:

  • Oś sztywnej części ustawia oś dotkniętej sztywnej części, która ma być wyrównana do celu.
  • Tryb wyrównania zapewnia różne tryby określania wyrównania celu:
    • W obszarze Global Space (Przestrzeń globalna) określ wyrównanie miejsca docelowego w przestrzeni globalnej.
    • W obszarze Przestrzeń lokalna, aby określić wyrównanie miejsca docelowego w przestrzeni lokalnej (ma sens tylko w przypadku woluminu wyzwalacza).
    • Kierunek prędkości w celu wyrównania ciała do prędkości liniowej.
    • W kierunku obiektu gry, aby wyrównać ciało do docelowego obiektu gameobject.
  • Wyrównanie docelowe ustawia kierunek docelowy wyrównania. (Tylko wtedy, gdy Tryb wyrównania jest ustawiony na Wartość W przestrzeni globalnej lub W przestrzeni lokalnej).
  • Obiekt docelowy gry ustawia kierunek docelowy wyrównania. (Tylko wtedy, gdy Tryb wyrównania jest ustawiony na Wartość W kierunku obiektu gry).
  • Mnożnik momentu obrotowego skaluje zastosowany moment obrotowy w celu osiągnięcia wyrównania celu; wyższy mnożnik obraca ciało szybciej (od 1 do 1000).
  • Współczynnik tłumienia ustawia współczynnik tłumienia (od 0 do 5). Po ustawieniu poniżej 1 treść może oscylować wokół orientacji docelowej.
  • Obiekty, których dotyczy problem , definiują opcjonalne warunki filtrowania dla ciał, których dotyczy ten składnik. (Domyślnie dotyczy to wszystkich ciał).

Pole kierunku prędkości

Pozwala kierować sztywną osobie, aż prędkość osiągnie kierunek docelowy.

Zrzut ekranu przedstawiający opcje skryptu Velocity Direction Field w inspektorze.

Ten składnik kontroluje tylko kierunek prędkości i utrzymuje bieżącą prędkość. Istnieją dwa tryby operacji:

  • Jeśli jest przymocowany do sztywnej osoby, ta sztywna osoba będzie kontrolowana.
  • Jeśli zostanie dołączony do zderzacza wyzwalacza, wszystkie sztywne ciała wchodzące w ten wolumin wyzwalacza będą miały wpływ.

Ustawienia:

  • Typ prędkości określa, czy pracujemy nad szybkością liniową, czy kątową.
  • Obserwowanie obiektu gry określa, czy element docelowy jest wstępnie zdefiniowanym kierunkiem, czy kierunkiem w kierunku określonego obiektu GameObject. Działa tylko w przypadku szybkości liniowej.
  • Treść docelowa (jeśli pozycja Obserwuj obiekt gry ma wartość true): ustawia żądany kierunek.
  • Kierunek docelowy określa żądany kierunek. Ta wartość jest znormalizowana, więc wielkość nie ma wpływu.
  • Direction In Local Space określa, czy kierunek jest określony w lokalnej transformacji eksplozji.
  • Maksymalne przyspieszenie definiuje maksymalne przyspieszenie stosowane do osiągnięcia prędkości docelowej.
  • Typ przyspieszenia definiuje typ przyspieszenia, aby osiągnąć prędkość docelową.
    • Natychmiastowe osiągnięcie kierunku docelowego natychmiast (takie samo jak przyspieszenie stałe z maksymalnym przyspieszeniem = Nieskończoność).
    • Stałe przyspieszenie zapewni, że ciało osiągnie prędkość docelową niezależnie od tego, co mieści się w granicach ustawienia Maksymalne przyspieszenie .
    • Smooth Approach zmniejsza przyspieszenie, im bliżej osiągasz prędkość docelową. Oznacza to, że w praktyce nigdy nie osiągniesz prędkości docelowej. Ponadto, jeśli istnieją jakiekolwiek wpływy zewnętrzne, takie jak pod górę lub w dół, ten dodatkowy wpływ nie będzie całkowicie przesłonięć, co spowoduje szybsze podjazd niż pod górę.
  • Obiekty, których dotyczy problem , definiują opcjonalne warunki filtrowania dla ciał, których dotyczy ten składnik. (Domyślnie dotyczy to wszystkich ciał).

Treść magnetyczna

Nadaje organizmowi właściwość magnetyczną, która przyciąga lub odpycha inne ciała.

Zrzut ekranu przedstawiający opcje skryptu Treść magnetyczna w Inspektorze.

Aby ten składnik działał, musi być dołączony do jednego lub kilku zderzaków. (Te zderzacze mogą być również zagnieżdżone w hierarchii transformacji poniżej GameObject tego składnika, który ma dołączony ten składnik). Każdy zderzacz wykazuje siłę na innych sztywnychbodach, które są wystarczająco blisko tego zderzacza.

Ustawienia:

  • Siła definiuje przyspieszenie magnesu w punkcie kontaktu (gdy odległość między zderzaczami wynosi zero).
  • Odległość wpływu kontroluje zakres siły magnetycznej. Siła magnetyczna jest stosowana tylko wtedy, gdy najkrótsza odległość między zderzaczami jest mniejsza.
  • Typ pola definiuje, w jaki sposób siła magnetyczna słabnie z odległością.
    • Stała zakłada, że siła magnetyczna jest taka sama, niezależna od odległości.
    • Liniowy zakłada, że siła magnetyczna spada liniowo z siły do zera (na odległość wpływu).
    • Odwrotnie zakłada odwrotnie proporcjonalną zależność od odległości.
    • Inverse Squared zakłada odwrotnie proporcjonalną zależność od odległości kwadratu (podobnej do rzeczywistego magnesu).
  • Pole magnetyczne kontroluje, które obiekty są przyciągane lub odpychane przez ten obiekt.
    • Biegun północny przyciąga biegun południowy i odpycha biegun północny.
    • Biegun południowy przyciąga biegun północny i odpycha biegun południowy.
    • Magnetyczne przyciąga zarówno biegun południowy, jak i biegun północny.
  • Wyłącz Gravity On Contact: Jeśli jest włączony, a siła magnesu jest dwa razy większa niż grawitacja , grawitacja jest wyłączona dla ciał, które są w kontakcie z tym magnesem. Jeden z obiektów musi być statyczny, aby mieć wpływ. Jest to często używane, aby zapobiec przesuwaniu ciał w dół ściany.

Eksplozja kulista

Tworzy eksplozję, która powoduje, że wszystkie ciała w określonym promieniu przesuwają się na zewnątrz.

Zrzut ekranu przedstawiający opcje skryptu Spherical Explosion w inspektorze.

Siła eksplozji zależy od masy sztywnego ciała (i potencjalnie odległości od centrum eksplozji).

Ustawienia:

  • Siła definiuje wpływ eksplozji na ciała w metrach na sekundę. Rzeczywista zmiana prędkości jest mniejsza w zależności od typu eksplozji i masy krytycznej (patrz poniżej).
  • Odległość wpływu kontroluje zakres siły wybuchu.
  • Typ pola definiuje, w jaki sposób efekt eksplozji osłabia się z odległością.
    • Stała zakłada, że efekt jest niezależny od odległości.
    • Linear Drop zakłada, że efekt spada z maksymalnej do zera (na odległość wpływu).
  • Masa krytyczna definiuje masę ciała, której nie dotyczy eksplozja. Cięższe ciała czują się mniej skuteczne niż lżejsze ciała. Na przykład sztywna osoba, która waży jedną trzecią masy krytycznej, poczuje dwie trzecie zmiany prędkości.
  • Skala impulsów angular definiuje miejsce zastosowania siły. W przypadku ustawienia wartości 0 siła jest stosowana w środku masy, co oznacza brak obrotu. W przypadku ustawienia wartości 1 siła jest stosowana w najbliższym punkcie eksplozji.
  • Occlusion Jeśli włączono, obiekty ukryte za innymi obiektami nie czują eksplozji. Sprawdzane jest tylko jedno promienie między centrum eksplozji a środkiem masy pod kątem okluzji.

Eksplozja kierunkowa

Tworzy eksplozję, która powoduje, że wszystkie ciała w wyzwalaczu poruszają się w określonym kierunku.

Zrzut ekranu przedstawiający opcje skryptu Directional Eplosion w inspektorze.

Siła eksplozji zależy od masy sztywnego ciała. Aby ten składnik działał, musi być dołączony do zderzacza wyzwalacza. Wszystkie ciała w zderzaczu wyzwalacza są dotknięte.

Ustawienia:

  • Siła definiuje wpływ eksplozji na ciała w metrach na sekundę. Rzeczywista zmiana prędkości jest mniejsza w zależności od masy krytycznej (patrz poniżej).
  • Kierunek definiuje kierunek eksplozji. Ta wartość jest znormalizowana, więc wielkość nie ma wpływu.
  • Direction In Local Space określa, czy kierunek jest określony w lokalnej transformacji eksplozji.
  • Masa krytyczna definiuje masę ciała, której nie dotyczy eksplozja. Cięższe ciała czują się mniej skuteczne niż lżejsze ciała. Na przykład sztywna osoba, która waży jedną trzecią masy krytycznej, poczuje dwie trzecie zmiany prędkości.
  • Skala impulsów angular definiuje miejsce zastosowania siły. W przypadku ustawienia wartości 0 siła jest stosowana w środku masy, co oznacza brak obrotu. W przypadku ustawienia wartości 1 siła jest stosowana w najbliższym punkcie eksplozji.
  • Obiekty, których dotyczy problem , definiują opcjonalne warunki filtrowania dla ciał, których dotyczy ten składnik. (Domyślnie dotyczy to wszystkich ciał).

Stabilizacja stawowa

Stabilizuje układ ograniczeń, dostosowując sztywny tensor sztywnej osoby.

Zrzut ekranu przedstawiający opcje wspólnego skryptu stabilizacji w Inspektorze.

Skrypt działa na wszystkich elementach podrzędnych z dołączonym składnikiem Rigidbody lub Joint.

Ustawienia:

  • Współczynnik stabilizacji określa, ile poświęcasz fizycznej poprawności pod kątem stabilności. Na przykład 1 —> głównie fizyka poprawna, 4 —> kompromis, 10 —> stabilna z artefaktami.
  • Projekcja wspólna umożliwia projekcję ograniczeń dla wszystkich elementów podrzędnych. Może to znacznie poprawić stabilność, ale poświęca poprawność fizyczną. Działa tylko na konfigurowalnych i znakowych stawach.
  • Odległość projekcji definiuje maksymalne dozwolone naruszenie ograniczeń. Aby uniknąć problemów z fizyką, spróbuj ustawić tę wartość tak wysoko, jak to możliwe.

Odbijając powierzchnię

Tworzy powierzchnię odbijającą się, która powoduje, że wszystkie zderzające się obiekty odbijają się ze wstępnie zdefiniowaną prędkością.

Zrzut ekranu przedstawiający opcje skryptu Bouncing Surface w inspektorze.

Ustawienia:

  • Wielkość prędkości odbicia definiuje minimalną i maksymalną wielkość prędkości obiektu po odbicia. Zobacz Efekt odbicia, aby dowiedzieć się, w jaki sposób jest określany kierunek. Ustaw wartość Minimalna i Maksymalna na wartość równą, jeśli chcesz określić pojedynczą prędkość docelową.
  • Efekt odbijania definiuje zamierzone zachowanie odbijających się obiektów.
    • Idealne odbicie: kąt prędkości przychodzącej do płaszczyzny kolizji normalny jest taki sam jak kąt prędkości wychodzącej.
    • Ustaw wielkość prędkości: kąt prędkości wychodzącej do normalnego wpływa na tarcie.
    • Ustaw prędkość normalną: podobną do ustawionej wielkości prędkości, ale wielkość prędkości odbijania definiuje wielkość prędkości prostopadłej do płaszczyzny (normalna prędkość).
    • Odbicie w kierunku ciała docelowego: kierunek prędkości wychodzącej jest skierowany do ciała docelowego. Jeśli ta opcja jest zaznaczona, zostanie wyświetlona właściwość Treść docelowa i musi zostać ustawiona.
  • Tarcie kontroluje, ile prędkości tangensalnych jest tracone po kolizji. Po ustawieniu wartości 0 obiekt odbijający zachowuje styczną prędkość. Po ustawieniu wartości 1 obiekt odbija się w kierunku prostopadłym do powierzchni (prędkość tangensowa wynosi 0). W przypadku wartości przekraczających 1 obiekt odbija się wstecz.

Środek przesunięcia masy

Przesuwa środek masy sztywnego ciała.

Zrzut ekranu przedstawiający opcje skryptu Środek masowego przesunięcia w Inspektorze.

Ustawienia:

  • Przesunięcie we współrzędnych lokalnych definiuje przesunięcie we współrzędnych lokalnych.

Zakres fizyki lokalnej

Wszystkie sztywnebodies w hierarchii w ramach tego składnika nie zostaną zsynchronizowane między klientami. Ten skrypt należy dodać do sztywnych elementów, których pozycje lub rotacje są ustawiane za pomocą skryptu wizualnego lub animacji.

Zrzut ekranu przedstawiający ustawienia Zakresu fizyki lokalnej w inspektorze.

Dowiedz się więcej o węzłach zdarzeń fizyki skryptów wizualnych usługi Mesh.

Rzutuj trajektorię

Oblicza przyszłą pozycję sztywnego ciała w wolnym miejscu pod wpływem grawitacji.

Zrzut ekranu przedstawiający opcje skryptu Throw Trajectory w Inspektorze.

Ustawienia:

  • Tryb sztywnego ciała: po ustawieniu wartości true pozycja sztywnego ciała i prędkość są traktowane jako warunki początkowe. Umożliwia obliczanie pozycji w czasie rzeczywistym.
  • Sztywna osoba (ma zastosowanie tylko wtedy, gdy tryb sztywnego ciała jest ustawiony na wartość true.): Definiuje, która sztywna osoba jest wykonywana.
  • Szybkość początkowa: (ma zastosowanie tylko wtedy, gdy tryb sztywnego ciała jest ustawiony na fałsz): definiuje szybkość początkową. Pozycja początkowa jest pobierana z pozycji obiektu GameObject, do którego jest dołączony ten składnik.
  • Maksymalna liczba punktów: definiuje maksymalną liczbę punktów obliczeniowych.
  • Krok czasu: definiuje różnicę czasu między przyszłymi pozycjami.
  • Grawitacja: To jest przyspieszenie grawitacyjne.
  • Renderer liniowy: określa renderator linii, do których są kopiowane pozycje punktów. Spowoduje to wyświetlenie trajektorii rzutu.

Resetuj przekształcenia treści

Po wyzwoleniu przez skrypt wizualizacji ten składnik resetuje położenie i rotację wszystkich ciał fizyki w tej samej transformacji lub dowolnych podrzędnych transformacji do ich wartości początkowych.

Zrzut ekranu przedstawiający składnik Reset Body Transforms w inspektorze.

Ustawienia:

  • Początkowe automatyczne zapisywanie: w przypadku wybrania opcji użyj przekształceń podczas uruchamiania środowiska jako przekształcenia resetowania. W przypadku wybrania opcji niezaznaczonej należy użyć skryptu wizualnego, aby wywołać funkcję Save Body Transforms Now w celu zapisania przekształceń resetowania przed wykonaniem resetowania.

Funkcje dostępne dla skryptów wizualnych

  • Resetuj przekształcenia treści teraz: resetuje położenie i rotację wszystkich ciał fizyki w zakresie tego składnika Reset Body Transforms do ich ostatnio zapisanych przekształceń resetowania. Wywołaj to tylko na jednym kliencie.

Zrzut ekranu przedstawiający składnik Resetuj przekształcenia treści w trybie edycji z wyróżnionym przyciskiem Resetuj treść przekształca teraz tylko w tryb odtwarzania.

Zrzut ekranu przedstawiający składnik Resetuj przekształcenia treści w trybie odtwarzania z wyróżnionym przyciskiem Resetuj treść Przekształć teraz.

  • Zapisz przekształcenia ciała Teraz zapisuje bieżące położenie i rotację wszystkich ciał fizyki w zakresie tego składnika Reset Body Transforms w miarę ich transformacji resetowania. Wywołaj to tylko na jednym kliencie.

Następne kroki