Sdílet prostřednictvím


Průvodce programátorem fyziky sítě

Obecné tipy

Můžete začít skenováním dokumentace k fyzikě Unity. K dispozici je spousta zdrojů informací o tom, jak optimalizovat fyziku v Unity.

Fyzika sítě přináší některé další výzvy. Tady je několik tipů, které vám pomůžou je překonat.

  • Udělejte silné stěny: Synchronizace sítě může mírně přesouvat pevná těla. V důsledku toho uvidíte další průnik mezi objekty. Malé dynamické těla se můžou potlačit tenkými stěnami. U silnějších objektů a stěn jsou tyto tunelové efekty méně pravděpodobné. Pokud je to možné, použijte konvexní trupu nebo malou sadu konvexních trupu pro dynamická těla.

  • Kdykoli je to možné, použijte pro statickou geometrii silné konvexní části. Snažte se vyhnout sítím, zejména velmi hustým sítím.

  • Realistické masy v kg: Obsah z různých zdrojů může interagovat ve stejné scéně. To funguje dobře, pokud jsou poměry hmotnosti mezi objekty přiměřené. Dobrým výchozím bodem je přiřadit realistické masy k tělům pomocí kg.

Vývoj vylepšeného obsahu fyziky sítě

Automatické přehrání animací

Do scény, která komunikuje s fyzikálními těly, můžete přidat automatické přehrání animací. Tyto animace se automaticky synchronizují mezi klienty tím, že dočasně upraví rychlost přehrávání (zpomalí je nebo zrychlí) na každém klientovi, dokud nebudou všichni klienti ve stejném stavu animace ve stejnou dobu.

Settings

  • Přehrát automaticky .
  • Animace fyziky se doporučuje (ale nevyžaduje), pokud animace ovlivňuje kolidátory, které pracují s fyzikálními těly.
  • Typ Culling nastaven na "Vždy animovat" (automaticky vynucuje Fyzika sítě), protože animace může ovlivnit fyzikální těla i v případě, že jsou mimo obrazovku.

Snímek obrazovky nastavení součásti Animace v inspektoru

Animační klip, který používá animace automatického přehrávání, může použít jakýkoli režim zalamování. Užitečné volby jsou "Smyčka" a "Ping Pong".

Snímek obrazovky nastavení assetu animačního klipu v inspektoru

Komponenty

Přidání jedné z následujících MonoBehaviour komponent do objektu přidá konkrétní chování tohoto objektu.

Lepivé tělo

Dělá těla zůstat na jiných tělech. Dá se použít k hodu šipky na jiná těla nebo k připojení obrázku na zeď. To se implementuje vytvořením pevného omezení mezi těmito dvěma subjekty. Poznámka: Tato operace se provádí na všech klientech a proto je implementována jako zvláštní síťová zpráva.

Snímek obrazovky s možnostmi skriptu Sticky Body v inspektoru

Settings

  • Stick: Definuje, jestli se tělo bude držet dynamických nebo statických těl.
  • Kdy: Někdy chcete držet rychlé tělo, když se jen dotkne jiného těla, a někdy chcete přidržet tělo, když se drží proti jinému tělu po danou dobu, jako je čekání na připevnění připevnění připevnit tlačítko na zeď.
  • Řízení kolizí: Chcete-li zakázat konkrétní kolize mezi jedním tělem a druhým. Za normálních okolností můžete použít vrstvy kolizí. Vzhledem k tomu, že v Microsoft Mesh existují pouze 32 pevně zakódované vrstvy kolizí, nemusí to být možnost. Tady můžete zakázat konkrétní těla.
  • Filtr ovlivněných těl pro tělo kolizí použitý pro kontrolu kolizí

Pole zahrnutí

Zajišťuje, aby pevná těla zůstala v mezích jednoho nebo několika aktivačních kolidátorů.

Snímek obrazovky s možnostmi skriptu Pole zahrnutí v inspektoru

Aby tato komponenta fungovala, musí být připojená k jednomu nebo několika aktivačním kolidátorům. (Tyto aktivační kolace lze také vnořit do hierarchie transformace pod připojenou GameObject touto komponentou.)

Pevné tělesa ovlivněná touto komponentou již musí být v mezích jeho aktivačních kolidátorů ("svazek aktivační události") při spuštění scény. Střed hmotnosti každého z těchto tuhých těl pak bude omezen tak, aby zůstal v mezích objemu aktivační události – nebude možné vytáhnout nebo jinak přesunout středy hmotnosti těchto tuhých těles kdekoli mimo.

Nastavení:

  • Maximální odchylka od zachytávání umožňuje, aby střed hmotnosti ovlivněného tuhého body mírně přešel mimo svazky aktivační události, než se přichytí zpět. Jedná se o kompromis optimalizace výkonu: pokud je povolená maximální odchylka velká, tělo může vidět, že svazek triggeru ponechá a přichytí se zpět, ale kód nemusí kontrolovat a ověřovat pozici těla velmi často, když leží nebo pohybuje pomalu uvnitř svazku aktivační události.

  • Ovlivněné tělo definuje volitelné podmínky filtrování pro těla ovlivněná touto komponentou. (Ve výchozím nastavení jsou ovlivněny všechny subjekty.)

Pole vektoru rychlosti

Umožňuje zrychlit/zpomalovat pevnou nikoho, dokud nedosáhne konkrétní cílové rychlosti.

Snímek obrazovky s možnostmi skriptu Směrová rychlost pole v inspektoru

Tato komponenta řídí velikost i směr rychlosti. Pokud chcete řídit pouze velikost a směr směru rychlosti, podívejte se na pole s velikostí velikostí a směrem. Existují dva režimy provozu:

  • Je-li připojeno k pevnému nikomu, bude toto tuhé tělo řízeno.
  • Pokud je připojeno ke sbalovači aktivační události, ovlivní to všechna pevná těla, která zadávají tento svazek aktivační události.

Nastavení:

  • Typ rychlosti definuje, jestli pracujeme na lineární nebo úhlové rychlosti.
  • Směr v místním prostoru definuje, zda je cílová rychlost určena v místním prostoru objektu, ke kterému je komponenta připojena.
  • Cílová rychlost nastaví požadovaný vektor rychlosti v metrech/sekundách (nebo radiánech/sekundách v případě úhlové rychlosti).
  • Maximální akcelerace definuje maximální akceleraci použitou pro dosažení cílové rychlosti.
  • Typ zrychlení definuje typ akcelerace pro dosažení cílové rychlosti.
    • Okamžitě dosáhne cílové rychlosti (stejné jako konstantní akcelerace s maximální akcelerací = nekonečno).
    • Konstantní akcelerace zajistí, že tělo dosáhne cílové rychlosti bez ohledu na to, co je v mezích nastavení maximální akcelerace .
    • Smooth Approach snižuje zrychlení tím, čím blíže se dostanete k cílové rychlosti. To znamená, že v praxi nikdy nedosáhnete cílové rychlosti. Navíc, pokud by tam byl jakýkoli vnější vliv, jako je přechod nahoru nebo dolů, tento dodatečný vliv nebude zcela přepsaný, což vede k rychlejšímu poklesu než do kopce.
  • Ovlivněné tělo definuje volitelné podmínky filtrování pro těla ovlivněná touto komponentou. (Ve výchozím nastavení jsou ovlivněny všechny subjekty.)

Škálované pole závažnosti

Změní, jak závažnost ovlivňuje pevná těla v rámci jedné nebo několika aktivačních kolidátorů.

Snímek obrazovky s možnostmi skriptu Antigravity Field v inspektoru

Aby tato komponenta fungovala, musí být připojená k jednomu nebo několika aktivačním kolidátorům. (Tyto aktivační kolace lze také vnořit do hierarchie transformace pod Objekt GameObject, který má připojenou tuto komponentu.)

Všechna pevná těla, která se dotknou nebo překrývají stiskem triggeru ("objem aktivační události") se chovají v závislosti na závažnosti této komponenty, nikoli podle globální fyziky závažnosti. Pevná těla, která mají vypnutou závažnost, jsou ignorována.

Existuje zajímavý vztah mezi vnímáním vlastní velikosti hráče ve světě a závažností:

  • Pokud je závažnost menší než to, na co jsme zvyklí (objekty jsou pomalejší, když spadnou), hráč vnímá, že je větší – jako obr.
  • Pokud je závažnost větší než to, na co jsme zvyklí (objekty jsou rychlejší, když spadnou), hráč vnímá, že je menší – jako myš.

Nastavení:

  • Přednastavení závažnosti umožňuje výběr několika zajímavých a užitečných přednastavení pro vlastnost Měřítko závažnosti : různé nebeské tělesa (Měsíc, Mars, Země, Jupiter), bez závažnosti (vnější prostor) nebo invertované závažnosti (vzhůru noside down). Měřítko závažnosti můžete kdykoli přepsat libovolnou hodnotou, kterou chcete.
  • Gravity Scale nastavuje místní závažnost uvnitř aktivačního svazku ve vztahu k výchozí fyzikální závažnosti ovlivňující scénu. Výchozí stupnice závažnosti 1 zůstává bez ovlivnění závažnosti; větší hodnoty zvyšují závažnost; 0 odstraňuje závažnost; záporné hodnoty přepínají směr závažnosti.
  • Ovlivněné tělo definuje volitelné podmínky filtrování pro těla ovlivněná touto komponentou. (Ve výchozím nastavení jsou ovlivněny všechny subjekty.)

Orbitální gravity pole

Simuluje závažnost "toy planety" ve vaší scéně.

Snímek obrazovky s možnostmi skriptu Gravity Field v inspektoru

Aby tato komponenta fungovala, musí být připojená k jednomu nebo několika aktivačním kolidátorům. (Tyto aktivační kolace lze také vnořit do hierarchie transformace pod Objekt GameObject, který má připojenou tuto komponentu.)

Všechna pevná těla, která se dotknou nebo překrývají kolidátory triggeru ("hlasitost aktivační události") se přetáhnou směrem k poloze objektu, který má tuto součást připojenou.

Nastavení:

  • Závažnost definuje velikost závažnosti. Jedná se o zrychlení obíhajícího těla ("měsíce") směrem k centrálnímu tělesu ve vzdálenosti 1 měřiče. Vzhledem k tomu, že orbitální rychlost je sqrt(závažnost/poloměr), tato hodnota popisuje rychlost měsíce ve stabilní oběžné dráze v poloměru jednoho měřiče.

  • Zakažte Global Gravity nastavení globální fyziky scény pro těla ovlivněná touto komponentou. Ve výchozím nastavení bude globální závažnost scény stále ovlivňovat vaši planetu a její měsíce.

  • Ovlivněná těla definují volitelné podmínky filtrování pro těla, která se mohou stát měsíci v tomto oboru závažnosti.

  • Force Moons On Circular Orbit je podvádění, které aplikuje některé jemné síly, které tlačí měsíc do kruhové oběžné dráhy. Motivací je, že je obtížné, aby non-expert nastavit závažnost a počáteční rychlost těla způsobem dosáhnout kruhové oběžné dráhy. Pokud je tato možnost povolená, začnou při načítání scény automaticky obíhají všechny měsíce umístěné uvnitř pole závažnosti v Unity Editoru.

  • Síla vynucené oběžné dráhy zvětšuje zrychlení použité k vynucení měsíce na kruhovou oběžnou dráhu.

  • Set Forced Radius Where Placed dělá měsíce, které jsou umístěny uvnitř gravity pole v Unity Editor automaticky přijmout jejich počáteční vzdálenost od centrálního těla jako jejich upřednostňovaná oběžná dráha.

  • Set Forced Radius Where Dropped dělá měsíce, které jsou interaktivně uchopeny a přesunuty do gravity pole automaticky osvojovat vzdálenost od centrálního těla, na kterém byly vyřazeny jako jejich upřednostňovaná oběžná dráha.

  • Výchozí poloměr vynucení definuje výchozí poloměr výše uvedeného tahu, který se používá, pokud není přepsán žádnou z dalších možností.

Buoyancy – pole

Simuluje buoyancy libovolných tuhých těles na vodě: Tělesa se zdá, že plují na připojeném objemu aktivační události.

Snímek obrazovky s možnostmi skriptu Buoyancy Field v inspektoru

Aby tato komponenta fungovala, musí být připojená k jednomu nebo několika kolidátorům triggerů. (Tyto aktivační kolace lze také vnořit do hierarchie transformace pod Objekt GameObject, který má připojenou tuto komponentu.)

Všechna pevná těla, která se dotknou nebo překrývají kolidátory triggeru ("hlasitost aktivační události") mají zkušenosti s buoyancy síly (upthrust), aby je udržely nad vodou.

Tato komponenta používá tvar kolidátorů tuhého body k výpočtu jeho hustoty (jinými slovy, objem dělený hmotou), buoyancy, přetažení a tření.

Buoyancy Colliders

Výhoda: Výkon. Výpočetní náklady na výpočty buoyancy se škálují lineárně s počtem sbalicích vrcholů. Typické fyziky kolidátory pro těla, i když už zjednodušené, jsou často výrazně složitější (z hlediska počtu vrcholů), než vyžaduje, aby buoyancy fungovala dostatečně dobře.

Postupy: Přidejte do těla jeden (nebo několik) dalších kolidátorů (lze je zakázat). Označte kolidátory jako explicitní buoyancy trupu tím, že jim přiřadíte fyzikální materiál pojmenovaný BuoyancyHull (přesné pravopisné záležitosti!). Podrobnosti o konfiguraci tohoto fyzikálního materiálu nezáleží – vhodný fyzikální materiál je dodáván s balíčkem sady nástrojů Mesh. Pokud tělo má nějaké kolidátory označené tímto způsobem, jsou použity pouze tyto kolidátory pro buoyancy výpočty; všechny ostatní kolidátory jsou ignorovány.

Osvědčené postupy: Explicitní buoyancy trupu koliduje s kýmkoli ztuhlým, který by mohl být vyvolán do BuoyancyField. Nejlepší (a nejsnadnější) je použít kolidátory cube, protože mají nejmenší vrcholy (osm na sbajovač). Porovnání přesného vizuálního tvaru buoyantního těla obvykle není pro dobrý výsledek vyžadováno; Velmi hrubá aproximace je obvykle dostatečná.

Nastavení:

  • Hustota je hustota simulované kapaliny, která "vyplní" objem aktivační události v kgch na krychlový měřič. (Výchozí hodnota představuje přibližnou hustotu vody při pokojové teplotě.)
  • Typ povrchu určuje, jak součást vzorkuje tvar vodní plochy k výpočtu sil buoyancy.
    • Statický byt předpokládá, že vodní plocha je dokonale planární a nikdy se nepřesune od jeho počáteční pozice ve scéně. Pozice a orientace vodní plochy je určena jen jednou, když scéna začíná. Jedná se o výpočetně nejlevnější možnost.
    • Dynamický byt předpokládá, že vodní povrch je dokonale planární, ale umožňuje, aby se mohl pohybovat (například hladina vody může zvýšit nebo jímka). Umístění a orientace vodní plochy se určuje jednou za rám.
    • Dynamic Flat Per Body podporuje vodní povrch, který není planární (například může být vlnovka). U každého tuhého člověka plovoucího na vodním povrchu je jednou určena místní rovinná aproximace vodní plochy pod tuhou sadou, která se pak používá k výpočtu sil buoyancy pro tuto pevnou body.
  • Ovlivněné tělo definuje volitelné podmínky filtrování pro těla, která mohou plout v tomto buoyancy pole. (Ve výchozím nastavení mají nárok všechny subjekty.)
  • Přetáhněte odolnost pohybu ovládacích prvků, protože tuhé tělo dosáhne vody (jinými slovy, tření orthogonální na povrch těla).
  • Třecí plochy řídí odolnost pohybu při pohybu tuhého těla se pohybuje vodou (jinými slovy, tření paralelně s povrchem těla).

Důležité Chcete-li komponentě povolit přístup ke sbalejícím mřížkám trojúhelníků s pevnou sadou, musí být v nastavení importu zřazení zaškrtnuté políčko "Povoleno čtení/zápis". V opačném případě bude tělo ignorováno buoyancy pole a propadne pole bez ovlivnění.

Důležité Ujistěte se, že vaše fyzikální těla mají přijatelné hmoty, aby se zajistilo, že se chovají podle očekávání v buoyancy pole:

  • Pokud je hmotnost tuhé body implausivně vysoká ve srovnání s jeho objemem, bude jímka dolů.
  • Pokud je hmotnost tuhé body implausicky nízká ve srovnání s jeho objemem (například výchozí jednotkou hmotnosti Unity Rigidbody ), bude jen sedět nad simulovanou kapalinou.

Ve výchozím nastavení vzorkuje pole buoyancy povrch objemu aktivační události k určení tvaru vodní plochy (podle zvoleného nastavení vodního povrchu ). Plochy animované v paměti procesoru se dají vzorkovat tímto způsobem, ale plochy animované pomocí shaderu vrcholů GPU nejsou pro skript za běhu viditelné. Komponenta BuoyancyField poskytuje delegát zpětného volání s podporou skriptů s názvem GetDistanceFromSurface , který umožňuje externím skriptům poskytovat informace o obrazci vodní plochy animované gpu.

Informace o BuoyancyFieldWaves tom, jak získat vlnovkovou hladinu bez kódu, najdete v následující části.

Buoyancy Field Waves

Doplněk ke komponentě BuoyancyField , která funguje s konkrétním shaderem BuoyancyFieldWaves_VertexPosition vrcholů (k dispozici jako graf dílčího shaderu i soubor zahrnutí HLSL). Tím se vytvoří vizuální efekt vlnité vodní plochy spolu s odpovídajícím chováním objektů plovoucích na vodním povrchu.

Snímek obrazovky s možnostmi skriptu Buoyancy Field Waves v inspektoru

Tato komponenta musí být přidána do Objektu GameObject, který již má komponentu přidanou BuoyancyField do ní.

Vodní plocha, která má být animovaný, musí být dodávána jako plochá, tesselated síť, jejíž hranice jsou požadovaného tvaru vodního povrchu, když je vidět shora dolů. Materiál použitý pro vodní povrch musí použít shader, který zahrnuje BuoyancyFieldWaves_VertexPosition dílčí shader k určení umístění vrcholu sítě. Zahrnutý ukázkový BasicWavyWaterSurface materiál (a graf shaderu se stejným názvem) můžete použít jako výchozí bod pro vývoj vlastního shaderu.

Nastavení:

  • Waves Mesh Renderer odkazuje na komponentu MeshRenderer , která vykresluje síť vodního povrchu.
    • Materiál ukazuje, který materiál používá vykreslovací modul. Toto je pouze pro informace.
    • Shader ukazuje, který shader používá materiál. Toto je pouze pro informace.
  • Názvy vlastností shaderu waves definují názvy požadovaných vlastností shaderu, které musí shader vystavit. K těmto vlastnostem přistupuje tato komponenta za běhu, aby se zajistilo, že chování tohoto pole je synchronizované s vizuály vodní plochy ve všech klientech.
    • Script Controlled Time je název vystavené floatvlastnosti shaderu typu, kterou bude tato komponenta průběžně aktualizovat o každý rámec s neustále se zvyšujícím časem (měřeným v sekundách), který se synchronizuje napříč všemi klienty. Sub-shader BuoyancyFieldWaves_VertexPosition používá tento sdílený čas k vytvoření vzoru vlny, který zůstává synchronizovaný na všech klientech a v synchronizaci s chováním buoyancy pole.
    • Wave Speed je název vystavené float-type shader vlastnost, která určuje základní rychlost , při které vlny šíří vodorovně. Samotná hodnota vlastnosti musí být nastavena v materiálu použitém na vlnovou povrchovou síť. Když tuto hodnotu nastavíte na nulu, změní se povrch vlny na statickou a neschválí se.
    • Vlnová délka je název vystavené floatvlastnosti shaderu typu, která určuje hrubost vzoru vlny. Samotná hodnota vlastnosti musí být nastavena v materiálu použitém na vlnovou povrchovou síť. Menší hodnoty vytvářejí krátké vlnky; větší hodnoty produkují dlouhé a uklidující vlny.
    • Wave Height je název vystavené float-type shader vlastnost, která určuje základní výšku vln. Samotná hodnota vlastnosti musí být nastavena v materiálu použitém na vlnovou povrchovou síť. Když tuto hodnotu nastavíte na nulu, zvlněná plocha bude zcela plochá.

Zahrnutý ukázkový BasicWavyWaterSurface graf shaderu (používaný materiálem se stejným názvem) používá požadovaný BuoyancyFieldWaves_VertexPosition dílčí shader vrcholů k výrobě vlnité 3D plochy, ale zahrnuje pouze minimální samostatnou implementaci fragmentu shaderu, díky čemuž se vykreslí povrch jako stíněný, prostý barevný, poloprůhledný mesh.

Snímek obrazovky grafu shaderu základního vodního povrchu vlnovek v Editoru grafů shaderu

Cestu fragmentu shaderu použitého s BuoyancyFieldWaves komponentou můžete přizpůsobit podle svých představ. Je však nezbytné, aby cesta vrcholu vašeho shaderu používala BuoyancyFieldWaves_VertexPosition graf dílčího shaderu a aby tento graf dílčího shaderu zpřístupnil čtyři vstupy jako floatvlastnosti shaderu typu v celkovém grafu shaderu, aby k nim komponenta mohla přistupovat za běhu. Pokud váš shader nebude obsahovat požadovaný graf dílčího shaderu nebo pokud některé z požadovaných vlastností shaderu nejsou vystavené, inspektor komponenty zobrazí chybovou zprávu v době návrhu a buoyancy nebude za běhu fungovat:

Snímek obrazovky s možnostmi skriptu Buoyancy Field Waves zobrazující chybovou zprávu: Požadovaný dílčí shader vrcholu se nepoužívá.

Snímek obrazovky s možnostmi skriptu Buoyancy Field Waves zobrazující chybovou zprávu: Shader vlastnost není vystavena materiálem.

Ukázkový BasicWavyWaterSurface graf shaderu může během vývoje obsahu sloužit jako samostatný objekt a jako výchozí bod pro vývoj vlastního shaderu. Alternativně můžete použít existující vodní povrch shader, zachovat jeho cestu fragmentu a nahradit pouze jeho vrcholovou cestu.

Max Angular Velocity

Přepíše výchozí maximální úhlovou rychlost fyzikálního těla.

Snímek obrazovky s možnostmi skriptu Max Angular Velocity v inspektoru

Fyzikální motor nedovolí, aby tuhá rychlost překročila tuto úhlovou rychlost. To může být užitečné buď omezit rychlost jízdy daného ztuhlého tělesa, nebo umožnit, aby se hodil rychleji než fyzikální výchozí hodnota, což je 50 radiánů za sekundu (přibližně 8 otáček za sekundu).

Maximální úhlová rychlost musí být zadaná v radiánech za sekundu. Zadaná hodnota se také zobrazuje ve stupních za sekundu (180 stupňů ≈ 3,14 radiánů) a revoluce za sekundu (1 revoluce = 360 stupňů ≈ 6,28 radiánů).

Pole velikostí rychlosti

Umožňuje zrychlení/zpomalení ztuhlého kóty, dokud nedosáhne rychlosti, která je v povoleném rozsahu.

Snímek obrazovky s možnostmi skriptu Velocity Field v inspektoru

Tato komponenta řídí velikost rychlosti a udržuje aktuální směr. Pokud by byl objekt stále, zvolí pro dobu trvání jednoho rámce náhodný směr. Existují dva režimy provozu:

  • Je-li připojeno k pevnému nikomu, bude toto tuhé tělo řízeno.
  • Pokud je připojeno ke sbalovači aktivační události, ovlivní to všechna pevná těla, která zadávají tento svazek aktivační události.

Nastavení:

  • Typ rychlosti definuje, jestli pracujeme na lineární nebo úhlové rychlosti.
  • Omezení rychlosti nastavuje požadované limity minimální a maximální rychlosti v metrech/sekundách (nebo radiánech/sekundách v případě úhlové rychlosti). Pokud je aktuální rychlost nižší než minimum, urychlí se, pokud je větší než maximum, bude tělo zpomalovat. Pokud je aktuální rychlost již v mezích limitů, skript nemá žádný vliv. Pokud chcete nastavit určitou cílovou rychlost, nastavte minimální a maximální hodnotu na stejnou hodnotu.
  • Maximální akcelerace definuje maximální akceleraci použitou pro dosažení cílové rychlosti.
  • Typ zrychlení definuje typ akcelerace pro dosažení cílové rychlosti.
    • Okamžitě dosáhne limitu rychlosti (totéž jako konstantní akcelerace s maximální akcelerací = nekonečno).
    • Konstantní akcelerace zajistí, že tělo dosáhne cílové rychlosti bez ohledu na to, co je v mezích nastavení maximální akcelerace .
    • Smooth Approach snižuje zrychlení tím, čím blíže se dostanete k cílové rychlosti. To znamená, že v praxi nikdy nedosáhnete cílové rychlosti. Navíc, pokud by tam byl jakýkoli vnější vliv, jako je přechod nahoru nebo dolů, tento dodatečný vliv nebude zcela přepsaný, což vede k rychlejšímu poklesu než do kopce.
  • Ovlivněné tělo definuje volitelné podmínky filtrování pro těla ovlivněná touto komponentou. (Ve výchozím nastavení jsou ovlivněny všechny subjekty.)

Zarovnat pole

Zarovná tělo na zadanou osu.

Snímek obrazovky s možnostmi skriptu Zarovnat pole v inspektoru

Tato komponenta přidává k těle točivý moment, aby se zarovná do určitého směru. Všimněte si, že točivý moment se vždy použije ve směru, který otočí tělo směrem k cíli. Existují dva režimy provozu:

  • Pokud je připevněno k pevnému nikomu, bude toto pevné tělo zarovnané.
  • Pokud je připojeno ke sbalovači aktivační události, budou zarovnány všechny pevné tělo, které zadávají tento svazek aktivační události.

Nastavení:

  • Ztuhlá osa nastaví osu ovlivněného tuhého tělesa, která se má zarovnat k cíli.
  • Režim zarovnání poskytuje různé režimy pro určení cílového zarovnání:
    • V globálním prostoru určete cílové zarovnání v globálním prostoru.
    • Chcete-li v místním prostoru určit cílové zarovnání v místním prostoru (dává smysl pouze se svazkem aktivační události).
    • Směr rychlosti zarovná tělo k jeho lineární rychlosti.
    • Směrem k hernímu objektu zarovnejte tělo k cílovému hernímu objektu.
  • Cílové zarovnání nastaví cílový směr zarovnání. (Pouze v případech, kdy Režim zarovnání je nastavený na V globálním prostoru nebo v místním prostoru.)
  • Cílový herní objekt nastaví cílový směr zarovnání. (Pouze v případech, kdy Režim zarovnání je nastaven na hodnotu Směrem k hernímu objektu.)
  • Násobitel momentu škáluje použitý moment tak, aby dosáhl cílového zarovnání; vyšší násobitel otočí tělo rychleji (mezi 1 a 1000).
  • Koeficient tlumení nastavuje faktor tlumení (mezi 0 a 5). Když nastavíte hodnotu nižší než 1, tělo může oscilovat kolem orientace cíle.

Pole směru rychlosti

Umožňuje ztuhlit nikoho, dokud rychlost nedosáhne cílového směru.

Snímek obrazovky s možnostmi skriptu Pole rychlosti směru v inspektoru

Tato komponenta řídí pouze směr rychlosti a udržuje aktuální rychlost. Existují dva režimy provozu:

  • Je-li připojeno k pevnému nikomu, bude toto tuhé tělo řízeno.
  • Pokud je připojeno ke sbalovači aktivační události, ovlivní to všechna pevná těla, která zadávají tento svazek aktivační události.

Nastavení:

  • Typ rychlosti definuje, jestli pracujeme na lineární nebo úhlové rychlosti.
  • Sledování herního objektu definuje, zda je cíl předdefinovaný směr nebo směr směrem ke konkrétnímu Objektu GameObject. Funguje pouze pro lineární rychlost.
  • Cílové tělo (pokud je sledování herního objektu nastaveno na hodnotu true): nastaví požadovaný směr sledování.
  • Směr cíle nastaví požadovaný směr. Tato hodnota je normalizována, takže velikost nemá žádný vliv.
  • Směr v místním prostoru definuje, zda je směr zadán v místní transformaci exploze.
  • Maximální akcelerace definuje maximální akceleraci použitou pro dosažení cílové rychlosti.
  • Typ zrychlení definuje typ akcelerace pro dosažení cílové rychlosti.
    • Okamžitě dosáhne cílového směru (totéž jako konstantní akcelerace s maximální akcelerací = nekonečno).
    • Konstantní akcelerace zajistí, že tělo dosáhne cílové rychlosti bez ohledu na to, co je v mezích nastavení maximální akcelerace .
    • Smooth Approach snižuje zrychlení tím, čím blíže se dostanete k cílové rychlosti. To znamená, že v praxi nikdy nedosáhnete cílové rychlosti. Navíc, pokud existuje nějaký vnější vliv, jako je přechod nahoru nebo dolů, tento dodatečný vliv nebude zcela přepsaný, což vede k rychlejšímu poklesu než do kopce.
  • Ovlivněné tělo definuje volitelné podmínky filtrování pro těla ovlivněná touto komponentou. (Ve výchozím nastavení jsou ovlivněny všechny subjekty.)

Magnetické tělo

Dává těle magnetickou vlastnost, která přiláká nebo odpuzuje ostatní těla.

Snímek obrazovky s možnostmi skriptu magnetického těla v inspektoru

Aby tato komponenta fungovala, musí být připojena k jednomu nebo několika kolidátorům. (Tyto kolidátory lze také vnořit do hierarchie transformace pod připojenou GameObject touto komponentou.) Každý kolidér vykazuje sílu na jiné tuhé těla, které jsou dostatečně blízko k tomuto kolizníku.

Nastavení:

  • Síla definuje zrychlení magnetu v místě kontaktu (pokud je vzdálenost mezi kolidátory nula).
  • Vzdálenost vlivu řídí rozsah magnetické síly. Magnetická síla se použije pouze v případě, že nejkratší vzdálenost mezi kolidátory je menší.
  • Typ pole definuje, jak magnetická síla oslabuje vzdálenost.
    • Konstanta předpokládá, že magnetická síla je stejná nezávisle na vzdálenosti.
    • Lineární předpokládá, že magnetická síla klesá lineárně z síly na nulu (na vzdálenost vlivu).
    • Inverzní funkce předpokládá inverzní proporcionální závislost na vzdálenosti.
    • Inverzní čtverec předpokládá inverzní proporcionální závislost na vzdálenosti kvadračně (podobně jako skutečný magnet).
  • Magnetické pole určuje, které objekty jsou přitahovány nebo odpuzovány tímto objektem.
    • Severní pól láká jižní pól a odpuzuje severní pól.
    • Jižní pól láká severní pól a odpuzuje jižní pól.
    • Magnetické láká jižní pól i severní pól.
  • Zakázat závažnost při kontaktu: Pokud je to povoleno, a síla magnetu je dvakrát větší než závažnost, závažnost je zakázána pro těla, které jsou v kontaktu s tímto magnetem. Aby to mělo vliv, musí být jeden z objektů statický. To se často používá k zabránění posuvu těla dolů stěnou.

Kulový výbuch

Vytvoří explozi, která způsobí, že se všechna těla v určitém poloměru přesunou směrem ven.

Snímek obrazovky s možnostmi skriptu s kulovou explozí v inspektoru

Síla výbuchu závisí na hmotnosti tuhé body (a potenciálně vzdálenost od středu exploze).

Nastavení:

  • Síla definuje účinek exploze na tělesa v metrech za sekundu. Skutečná změna rychlosti je menší v závislosti na typu výbuchu a kritické hmotnosti (viz níže).
  • Vzdálenost vlivu řídí rozsah explozí síly.
  • Typ pole definuje, jak efekt exploze oslabuje vzdáleností.
    • Konstanta předpokládá, že efekt je nezávislý na vzdálenosti.
    • Lineární drop předpokládá, že efekt klesne z maxima na nulu (na vzdálenost vlivového faktoru).
  • Kritická hmotnost definuje hmotnost těla, která není ovlivněna explozí. Těžší těla mají menší účinek než světlejší těla. Například pevná část, která váží jednu třetinu kritické hmotnosti , bude cítit dvě třetiny změny rychlosti.
  • Angular Impuls Scale definuje, kde se síla používá. Pokud je nastavená hodnota 0, použije se síla na střed hmotnosti, což znamená, že se nestřídá. Pokud je nastavená hodnota 1, použije se síla v nejbližším bodě k exploze.
  • Okluze Pokud je povoleno, objekty skryté za jinými objekty necítí exploze. Pouze jeden paprsek mezi středem výbuchu a středem hmoty je kontrolována okluze.

Směrová exploze

Vytvoří explozi, která způsobí, že se všechny těla v triggeru přesunou určitým směrem.

Snímek obrazovky s možnostmi směrového skriptu eplosion v inspektoru

Síla výbuchu závisí na hmotnosti tuhé body. Aby tato komponenta fungovala, musí být připojena ke sbalovači triggeru. Ovlivněny jsou všechny těla v rámci sbalovače triggeru.

Nastavení:

  • Síla definuje účinek exploze na tělesa v metrech za sekundu. Skutečná změna rychlosti je menší v závislosti na kritické hmotnosti (viz níže).
  • Směr definuje směr exploze. Tato hodnota je normalizována, takže velikost nemá žádný vliv.
  • Směr v místním prostoru definuje, zda je směr zadán v místní transformaci exploze.
  • Kritická hmotnost definuje hmotnost těla, která není ovlivněna explozí. Těžší těla mají menší účinek než světlejší těla. Například pevná část, která váží jednu třetinu kritické hmotnosti , bude cítit dvě třetiny změny rychlosti.
  • Angular Impuls Scale definuje, kde se síla používá. Pokud je nastavená hodnota 0, použije se síla na střed hmotnosti, což znamená, že se nestřídá. Pokud je nastavená hodnota 1, použije se síla v nejbližším bodě k exploze.
  • Ovlivněné tělo definuje volitelné podmínky filtrování pro těla ovlivněná touto komponentou. (Ve výchozím nastavení jsou ovlivněny všechny subjekty.)

Stabilizace kloubu

Stabilizuje systém omezení úpravou tuhého tuhého tensoru.

Snímek obrazovky s možnostmi skriptu společné stabilizace v inspektoru

Skript funguje na všech podřízených objektech s připojenou komponentou Rigidbody nebo Joint.

Nastavení:

  • Faktor stabilizace definuje, kolik obětujete fyzickou správnost pro stabilitu. Například 1 –> převážně fyzika správná, 4 –> kompromis, 10 –> stabilní s artefakty.
  • Společné projekce umožňuje projekce omezení pro všechny podřízené položky. To může výrazně zlepšit stabilitu, ale obětuje fyzickou správnost. Funguje pouze na konfigurovatelných a znakových kloubech.
  • Vzdálenost projekce definuje maximální povolené porušení omezení. Abyste se vyhnuli fyzikálním problémům, zkuste tuto hodnotu nastavit co nejvíce.

Bouncing Surface

Vytvoří odrazovou plochu, která způsobí, že se všechny kolidující objekty odrazí s předdefinovanou rychlostí.

Snímek obrazovky s možnostmi skriptu Bouncing Surface v inspektoru

Nastavení:

  • Velikost rychlosti odrazu definuje minimální a maximální rychlost objektu po odrazu. Informace o určení směru najdete v části Efekt bounce. Pokud chcete zadat jednu cílovou rychlost, nastavte minimální a maximální hodnotu na stejnou hodnotu.
  • Efekt bounce definuje zamýšlené chování skákacích objektů.
    • Perfektní odraz: úhel příchozí rychlosti do kolizní roviny normální je stejný jako úhel výstupní rychlosti.
    • Nastavit velikost rychlosti: úhel výstupní rychlosti na normální je ovlivněn třením.
    • Nastavit normální rychlost: podobně jako Nastavit velikost rychlosti, ale Velikost rychlosti odrazu definuje velikost rychlosti kolmo k rovině (normální rychlost).
    • Odraz směrem k cílovému těle: směr odchozí rychlosti je směr směrován na cílové tělo. Pokud je tato možnost vybrána, zobrazí se vlastnost Target Body a musí být nastavena.
  • Třecí plochy řídí, kolik tangenciální rychlosti se při kolizi ztratí. Při nastavení na hodnotu 0 zachová skákající objekt tangenciální rychlost. Při nastavení na hodnotu 1 se objekt odrazí ve směru kolmé k povrchu (tangenciální rychlost je 0). U hodnot větších než 1 se objekt odrazí zpět.

Střed odsazení hmotnosti

Odsadí střed hmotnosti tuhé body.

Snímek obrazovky s možnostmi skriptu Center Of Mass Offset v inspektoru

Nastavení:

  • Posun v místních souřadnicích definuje posun v místních souřadnicích.

Obor místní fyziky

Všechna pevná těla v hierarchii v této komponentě nebudou synchronizována mezi klienty. Tento skript by měl být přidán do pevných bodů, jejichž pozice nebo otočení jsou nastaveny pomocí vizuálního skriptu nebo animace.

Snímek obrazovky nastavení místního oboru fyziky v inspektoru

Seznamte se s uzly událostí vizuální skriptování vizuálů.

Házení trajektorie

Vypočítá budoucí pozici pevné body ve volném prostoru pod vlivem závažnosti.

Snímek obrazovky s možnostmi skriptu Vyvolat trajektorii v inspektoru

Nastavení:

  • Ztuhlý režim: Při nastavení na hodnotu true se pevná pozice a rychlost zachovají jako počáteční podmínky. Umožňuje výpočet budoucí pozice v reálném čase.
  • Tuhé tělo (platí pouze v případech, kdy je režim ztuhlý na hodnotu true.): Definuje, které pevné body je převzato.
  • Počáteční rychlost: (platí pouze v případech, kdy je režim Rigidbody nastaven na hodnotu false): Definuje počáteční rychlost. Počáteční pozice je převzata z pozice GameObject, ke které je tato komponenta připojena.
  • Maximální počet bodů: Definuje maximální počet počítaných bodů.
  • Časový krok: Definuje časový rozdíl mezi budoucími pozicemi.
  • Závažnost: Toto je gravitaktivní zrychlení.
  • Vykreslovací modul řádku: Určuje vykreslovač čáry, do které se zkopíruje pozice bodů. Zobrazí se trajektorie hodu.

Obnovení transformací těla

Při aktivaci vizuálním skriptem tato komponenta resetuje pozici a otočení všech fyzikálních těles ve stejné transformaci nebo jakékoli podřízené transformace na počáteční hodnoty.

Snímek obrazovky komponenty Reset Body Transforms v inspektoru

Nastavení:

  • Počáteční automatické ukládání: Pokud je vybráno, použijte transformace při spuštění prostředí jako transformace resetování. Pokud není vybráno, musíte před resetováním použít vizuální skript k volání funkce Save Body Transforms Now(Uložit transformace textu).

Funkce dostupné pro vizuální skripty

  • Obnovit transformace těla nyní: Obnoví pozici a otočení všech fyzikálních těl v rozsahu této komponenty Reset Body Transforms na jejich naposledy uložené transformace resetování. Vyvolání tohoto kódu pouze na jednom klientovi.

Snímek obrazovky komponenty Obnovit transformace textu v režimu úprav se zvýrazněným tlačítkem Obnovit transformace textu nyní pouze v režimu přehrávání

Snímek obrazovky komponenty Reset Body Transforms v režimu přehrávání se zvýrazněným tlačítkem Obnovit transformaci těla nyní

  • Funkce Uložit transformace těla teď uloží aktuální pozici a otočení všech fyzikálních těl v rozsahu této komponenty Transformace těla resetování, protože jejich transformace resetují. Vyvolání tohoto kódu pouze na jednom klientovi.

Další kroky