Przewodnik programisty fizyki siatki

Ogólne porady

Możesz rozpocząć od skanowania dokumentacji fizyki aparatu Unity. Dostępnych jest wiele zasobów dotyczących optymalizowania fizyki w a także aparatu Unity.

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

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

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

  • 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 dodać animacje autoodtwarzania do sceny, która współdziała z ciałami fizyki. Te animacje są automatycznie synchronizowane między klientami przez tymczasowe dostosowanie ich 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 włączone.
  • 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ę usługi Mesh), ponieważ animacja może mieć wpływ na ciała fizyki nawet wtedy, gdy są wyłączone.

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 następujących 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 implementowane 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

  • Trzymać: Określa, czy treść będzie trzymać się treści dynamicznych lub/i statycznych.
  • Kiedy: Czasami chcesz trzymać szybkie ciało, gdy po prostu dotyka innego ciała, a czasami chcesz trzymać ciało, gdy jest trzymany przeciwko innemu ciału przez dany czas, jak czekanie na klej do utwardzania, 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 ponieważ w usłudze Microsoft Mesh istnieją tylko 32 zakodowane warstwy kolizji, może to nie być opcja. W tym miejscu można wyłączyć określone ciała.
  • Ciała dotknięte kolizją Filtr treści zastosowany do kontrolki kolizji.

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 zderzaczy wyzwalaczy. (Te zderzacze wyzwalacza można również zagnieżdżać w hierarchii przekształcania poniżej dołączonego GameObject tego składnika).

Sztywne ciała, na które ma wpływ ten składnik, muszą już znajdować się w granicach zderzaczy wyzwalaczy ("głośność wyzwalacza") podczas uruchamiania sceny. Środek masy każdego z tych sztywnych ciał będzie następnie ograniczony do pozostania w granicach głośności wyzwalacza - nie będzie można wyciągnąć ani w inny sposób przenieść środka masy tych sztywnych ciał w dowolnym miejscu na zewnątrz.

Ustawienia:

  • Maksymalne odchylenie od zawierania umożliwia środek masy dotkniętego sztywnego ciała, aby nieznacznie wyjść poza woluminy wyzwalacza, zanim zatrzasnie się z powrotem. Jest to kompromis optymalizacji wydajności: jeśli dozwolone odchylenie maksymalne 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 odpoczynku lub przesuwa się powoli wewnątrz woluminu wyzwalacza.

  • Affected Bodies definiuje opcjonalne warunki filtrowania dla ciał dotkniętych tym składnikiem. (Domyślnie dotyczy to wszystkich ciał).

Pole wektora prędkości

Pozwala przyspieszyć/zwolnić sztywną osobie, 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 Pole kierunku prędkości , aby kontrolować tylko kierunek. Istnieją dwa tryby operacji:

  • Jeśli jest przymocowany do sztywnego ciała, ten sztywny będzie kontrolowany.
  • 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 przestrzeni lokalnej 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 (takie samo jak przyspieszanie stałe z maksymalnym przyspieszeniem = Nieskończoność).
    • Stałe przyspieszanie 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 zewnętrzne wpływy, takie jak pod górę lub w dół, ten dodatkowy wpływ nie będzie całkowicie przesłonięć, co spowoduje szybsze podjazd niż w górę.
  • Affected Bodies definiuje opcjonalne warunki filtrowania dla ciał dotkniętych tym składnikiem. (Domyślnie dotyczy to wszystkich ciał).

Skalowane pole grawitacji

Zmienia sposób, w jaki grawitacja wpływa na sztywne ciała w granicach jednego lub kilku zderzaczy 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 zderzaczy wyzwalaczy. (Te zderzacze wyzwalacza 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 ("głośność wyzwalacza") zachowują się zgodnie z ustawieniami grawitacji tego składnika, a nie globalnej grawitacji fizyki. Sztywne ciała, 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 upadną), gracz postrzega się jako większy - jak gigant.
  • Jeśli grawitacja jest większa niż to, do czego jesteśmy przyzwyczajeni (obiekty są szybsze, gdy upadną), gracz postrzega się jako mniejszy — jak mysz.

Ustawienia:

  • Ustawienie Gravity Preset umożliwia wybór kilku interesujących i przydatnych ustawień właściwości Skala Grawitacji : różne ciała niebieskie (Księżyc, Mars, Ziemia, Jowisz), brak grawitacji (Przestrzeń Zewnętrzna) lub odwrócona grawitacja (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.
  • Affected Bodies definiuje opcjonalne warunki filtrowania dla ciał dotkniętych tym składnikiem. (Domyślnie dotyczy to wszystkich ciał).

Pole grawitacji orbitalnej

Symuluje grawitację "planety toy" w 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 zderzaczy wyzwalaczy. (Te zderzacze wyzwalacza 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 dotykające lub nakładające 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ącego ciała ("księżyca") w kierunku centralnego ciała w odległości jednego metra. Ponieważ prędkość orbitalna jest sqrt(grawitacja/promień), ta wartość opisuje prędkość księżyca na stabilnej orbicie o promieniu jednego metra.

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

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

  • Force Moons On Circular Orbit to oszustwo, które stosuje kilka delikatnych sił, aby wepchnąć 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 na osiągnięcie orbity okrągłej. 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 okrągłej orbicie.

  • 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 ciała centralnego 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 porzucone jako preferowana orbita.

  • Domyślny promień wymuszenia definiuje domyślny promień powyższego oszustwa, chyba że zostanie zastąpiony przez dowolną z innych opcji.

Pole buoyancy

Symuluje pływalność dowolnych sztywnych ciał na wodzie: Ciała wydają się unosić się na połączonym woluminie wyzwalacza.

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

Aby ten składnik działał, musi być dołączony do jednego lub kilku zderzaczy wyzwalaczy. (Te zderzacze wyzwalacza 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ł buoyancy (upthrust), aby utrzymać je na powierzchni.

Ten składnik wykorzystuje kształt zderzaków sztywnego ciała do obliczania jego gęstości (innymi słowy, objętości podzielonej przez masę), pływalności, przeciągania i tarcia.

Zderzacze buoyancy

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

Jak użyć: Dodaj do treści jeden (lub kilka) dodatkowych zderzaków (można je wyłączyć). 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 fizyki 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ń buoyancy; 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). Dopasowanie dokładnego kształtu wizualnego ciała płomień zwykle nie jest wymagane dla dobrego wyniku; bardzo grube 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 w celu obliczenia sił pływalności.
    • 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 ruch (na przykład poziom wody może wzrosnąć lub zlewać). 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żdej sztywnej osoby unoszącej się na powierzchni wodnej 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ływalności dla tego sztywnego ciała.
  • Affected Bodies definiuje opcjonalne warunki filtrowania dla ciał, które mogą pływać w tym polu pływalności. (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 trójkątów siatki zderzacza sztywnego, należy zaznaczyć pole wyboru "Odczyt/zapis włączony" w ustawieniach importu siatki zderzacza. W przeciwnym razie treść zostanie zignorowana przez pole pływania i przejdzie przez pole bez wpływu na nie.

Ważne! Upewnij się, że twoje 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 do jego objętości, zatopi się na dnie.
  • Jeśli masa sztywnego ciała jest niemożliwie niska w porównaniu z jego objętością (na przykład domyślna Rigidbody jednostka jedności jednej jednostki masy), po prostu usiądzie 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 zastrzeżeniem 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ępnym zarówno jako graf podrzędny, jak i plik dołączany HLSL). Spowoduje to utworzenie wizualnego wpływu 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 należy dodać do obiektu GameObject, który ma BuoyancyField już dodany do niego składnik.

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

Ustawienia:

  • Moduł renderujący siatki fal odwołuje się do MeshRenderer składnika, który renderuje siatkę powierzchni wody.
    • Materiał pokazuje, który materiał jest używany przez program renderowany. Dotyczy to tylko informacji.
    • Shader 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 pływania pozostaje zsynchronizowane z wizualizacjami powierzchni wody we wszystkich klientach.
    • Czas kontrolowany przez skrypt 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 fal, który pozostaje zsynchronizowany na wszystkich klientach i zsynchronizowany z zachowaniem pola pływania.
    • Wave Speed to nazwa uwidocznionej floatwłaściwości cieniowania typu , która określa szybkość bazową , z jaką fale są propagowane w poziomie. Sama wartość właściwości musi być ustawiona w materiale zastosowanym do siatki powierzchni fali. Ustawienie tej wartości na zero sprawia, że powierzchnia fali staje się statyczna i niewzruszone.
    • Długość fali to nazwa uwidocznionej floatwłaściwości cieniowania typu , która określa grubszość wzorca fali. Sama wartość właściwości musi być ustawiona w materiale zastosowanym do siatki powierzchni fali. Mniejsze wartości generują krótkie fale; większe wartości generują długie, zamiatanie fal.
    • Wave Height to nazwa uwidocznionej floatwłaściwości cieniowania typu , która określa wysokość podstawową fal. Sama wartość właściwości musi być ustawiona 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óbek BasicWavyWaterSurface (używany przez materiał o tej samej nazwie) używa wymaganego BuoyancyFieldWaves_VertexPosition cieniowania wierzchołków do produkcji falistej powierzchni 3D, ale obejmuje tylko minimalną implementację stand-in dla cieniowania fragmentów, co sprawia, że renderuje powierzchnię jako niezaciemnione, przezroczyste, 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. Jednak istotne jest, aby ścieżka wierzchołka cieniowania używa wykresu BuoyancyFieldWaves_VertexPosition podrzędnego cieniowania i uwidacznia cztery dane wejściowe dla tego wykresu cieniowania podrzędnego jako floatwłaściwości cieniowania ogólnego wykresu cieniowania, aby składnik mógł uzyskać do nich dostęp w czasie wykonywania. Jeśli cieniowanie nie będzie zawierać wymaganego wykresu 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 bojowość 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 widoczna przez materiał.

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

Maksymalna szybkość 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ść wprowadzania danego sztywnego ciała lub umożliwić mu przerzucanie szybciej niż domyślna fizyka, czyli 50 radianów na sekundę (około 8 rewolucji na sekundę).

Maksymalna prędkość kątowa musi być wprowadzona 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/spowolnienie sztywnego ciała, dopóki nie osiągnie prędkości, która znajduje się w dopuszczalnym zakresie.

Zrzut ekranu przedstawiający opcje skryptu Prędkości pola w Inspektorze.

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

  • Jeśli przymocowany do sztywnego ciała, ten sztywny będzie kontrolowany.
  • Jeśli dołączono do zderzacza wyzwalacza, wszystkie sztywne ciała wchodzące w ten wolumin wyzwalacza zostaną dotknięte.

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 to więcej niż maksymalna wartość ciała zostanie zwolniona. Jeśli bieżąca szybkość jest już w granicach, skrypt nie ma wpływu. Aby ustawić określoną szybkość docelową, ustaw wartość minimalną i maksymalną na tę samą wartość.
  • Maksymalne przyspieszenie definiuje maksymalne przyspieszenie zastosowane 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 przyspieszanie 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 prędkości docelowej. Oznacza to, że w praktyce nigdy nie osiągniesz prędkości docelowej. Ponadto, jeśli nie będzie żadnych wpływów zewnętrznych, takich jak w górę lub w dół, ten dodatkowy wpływ nie będzie całkowicie przesłonięć, co spowoduje szybsze zejścia w dół niż pod górę.
  • Affected Bodies definiuje opcjonalne warunki filtrowania dla ciał dotkniętych tym składnikiem. (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 obracania ciała w kierunku celu. Istnieją dwa tryby działania:

  • Jeśli przymocowany do sztywnego ciała, ten sztywny będzie wyrównany.
  • Jeśli jest dołączony do zderzacza wyzwalacza, wszystkie sztywne ciała wchodzące w ten wolumin wyzwalacza zostaną wyrównane.

Ustawienia:

  • Oś sztywnego ciała ustawia oś dotkniętej sztywnej osoby, która ma być wyrównana do celu.
  • Tryb wyrównania udostępnia różne tryby określania wyrównania docelowego:
    • W obszarze 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 to 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 ma wartość W przestrzeni globalnej lub w przestrzeni lokalnej).
  • Obiekt gry docelowej ustawia kierunek docelowy wyrównania. (Tylko wtedy, gdy w trybie wyrównania jest ustawiona wartość W kierunku obiektu gry).
  • Mnożnik momentu obrotowego skaluje zastosowany moment obrotowy w celu osiągnięcia wyrównania celu; wyższa 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.

Pole kierunku prędkości

Pozwala kierować sztywnym nikim, 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 działania:

  • Jeśli przymocowany do sztywnego ciała, ten sztywny będzie kontrolowany.
  • Jeśli dołączono do zderzacza wyzwalacza, wszystkie sztywne ciała wchodzące w ten wolumin wyzwalacza zostaną dotknięte.

Ustawienia:

  • Typ prędkości określa, czy pracujemy nad szybkością liniową, czy kątową.
  • Postępuj zgodnie z obiektem gry , określa, czy element docelowy jest wstępnie zdefiniowanym kierunkiem, czy kierunkiem w kierunku określonego obiektu GameObject. Działa tylko w przypadku prędkości liniowej.
  • Treść elementu docelowego (jeśli wartość Obserwowanie obiektu gry jest ustawiona na wartość true): ustawia żądany kierunek.
  • Kierunek docelowy ustawia żądany kierunek. Ta wartość jest znormalizowana, więc wielkość nie ma wpływu.
  • Kierunek w przestrzeni lokalnej określa, czy kierunek jest określony w lokalnej transformacji eksplozji.
  • Maksymalne przyspieszenie definiuje maksymalne przyspieszenie zastosowane 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 przyspieszanie 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 prędkości docelowej. Oznacza to, że w praktyce nigdy nie osiągniesz prędkości docelowej. Ponadto, jeśli istnieje jakikolwiek wpływ zewnętrzny, taki jak przechodzenie pod górę lub w dół, ten dodatkowy wpływ nie będzie całkowicie przesłonięć, co spowoduje, że będzie szybszy w dół niż w górę.
  • Affected Bodies definiuje opcjonalne warunki filtrowania dla ciał dotkniętych tym składnikiem. (Domyślnie dotyczy to wszystkich ciał).

Ciało magnetyczne

Daje 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 można również zagnieżdżać w hierarchii transformacji poniżej GameObject tego składnika dołączonego). 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 określa, w jaki sposób siła magnetyczna osłabia się z odległością.
    • Stała zakłada, że siła magnetyczna jest taka sama niezależnie od odległości.
    • Liniowa zakłada, że siła magnetyczna spada liniowo z siły do zera (na odległość wpływu).
    • Odwrotność zakłada odwrotnie proporcjonalną zależność od odległości.
    • Inverse Squared zakłada odwrotnie proporcjonalną zależność od odległości kwadratu (podobnie jak rzeczywisty magnes).
  • Pole magnetyczne kontroluje, które obiekty są przyciągane lub odpychane przez ten obiekt.
    • Biegun północny przyciąga biegun południowy i odparł 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, asił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 do zapobiegania przesuwaniu ciał w dół ściany.

Eksplozja kulista

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

Zrzut ekranu przedstawiający opcje skryptu eksplozji kulistej 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/sekundach. 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 eksplozji.
  • Typ pola określa, 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.
    • Liniowy spadek zakłada, że efekt spada z maksymalnej do zera (na odległość wpływu).
  • Masa krytyczna definiuje masę ciała, na którą nie wpływa 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.
  • Angular Skala impulsów definiuje miejsce stosowania siły. Jeśli ustawiono wartość 0, siła jest stosowana w środku masy, co oznacza brak obrotu. Jeśli ustawiono wartość 1, siła jest stosowana w najbliższym punkcie eksplozji.
  • Okluzji Jeśli jest włączona, obiekty ukryte za innymi obiektami nie czują eksplozji. Tylko pojedyncze promienie między centrum eksplozji a centrum masy jest sprawdzane pod kątem oklusji.

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ł, należy go dołączyć do zderzacza wyzwalacza. Wszystkie ciała w zderzaczu wyzwalacza są dotknięte.

Ustawienia:

  • Siła definiuje wpływ eksplozji na ciała w metrach/sekundach. 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.
  • Kierunek w przestrzeni lokalnej określa, czy kierunek jest określony w lokalnej transformacji eksplozji.
  • Masa krytyczna definiuje masę ciała, na którą nie wpływa 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.
  • Angular Skala impulsów definiuje miejsce stosowania siły. Jeśli ustawiono wartość 0, siła jest stosowana w środku masy, co oznacza brak obrotu. Jeśli ustawiono wartość 1, siła jest stosowana w najbliższym punkcie eksplozji.
  • Affected Bodies definiuje opcjonalne warunki filtrowania dla ciał dotkniętych tym składnikiem. (Domyślnie dotyczy to wszystkich ciał).

Stabilizacja stawowa

Stabilizuje system ograniczeń, dostosowując tensor sztywnej osobie.

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

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

Ustawienia:

  • Czynnik stabilizacji określa, ile poświęcasz fizycznej poprawności dla 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.

Powierzchnia odbijania

Tworzy odbijającą się powierzchnię, 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 odbieniu. Zobacz Efekt odbicia , aby dowiedzieć się, w jaki sposób kierunek jest określany. Ustaw wartość Minimalna i Maksymalna na równą, jeśli chcesz określić pojedynczą szybkość docelową.
  • Efekt odbicia 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 jest dotknięty tarciem.
    • Ustaw normalną szybkość: podobną do ustawionej wielkości prędkości, ale wielkość prędkości odbicia definiuje wielkość prędkości prostopadłej do płaszczyzny (normalna prędkość).
    • Odbij się w kierunku ciała docelowego: kierunek prędkości wychodzącej jest kierowany do ciała docelowego. Jeśli ta opcja jest zaznaczona, zostanie wyświetlona właściwość Treść docelowa i musi zostać ustawiona.
  • Tarcie steruje tym, ile tangensalnych prędkości traci się po kolizji. Po ustawieniu wartości 0 obiekt odbijający zachowuje tangensalną prędkość. Po ustawieniu wartości 1 obiekt odbija się w kierunku prostopadłym do powierzchni (tangential prędkość wynosi 0). W przypadku wartości większej niż 1 obiekt odbija się wstecz.

Środek przesunięcia masy

Przesuwa środek masy sztywnego ciała.

Zrzut ekranu przedstawiający opcje skryptu środkowego 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 sztywnebody w hierarchii w ramach tego składnika nie zostaną zsynchronizowane między klientami. Ten skrypt należy dodać do sztywnych ramek, 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.

Rzut trajektorii

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

Zrzut ekranu przedstawiający opcje skryptu Rzut trajektorii w Inspektorze.

Ustawienia:

  • Tryb sztywnego ciała: Po ustawieniu wartości true pozycja sztywnego ciała i szybkość 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 true.): Definiuje, który sztywny ktoś jest przyjmowany.
  • Początkowa szybkość: (ma zastosowanie tylko wtedy, gdy tryb sztywnego ciała ma wartość false): Definiuje początkową szybkość. Pozycja początkowa jest pobierana z pozycji 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: Jest to przyspieszenie grawitacyjne.
  • Renderer liniowy: określa renderator linii, do których są kopiowane położenie punktów. Spowoduje to wyświetlenie trajektorii rzutu.

Następne kroki