Dela via


Mesh Physics Programmer's Guide

Allmänna tips

Du kan börja med att skanna unity-fysikdokumenten. Det finns gott om resurser för att optimera fysiken i Unity.

Mesh Fysik levereras med några extra utmaningar. Här är några tips som hjälper dig att övervinna dem.

  • Gör tjocka väggar: Nätverkssynkronisering kan flytta stela kroppar något. Därför ser du lite extra intrång mellan objekt. Små dynamiska kroppar kan tryckas genom tunna väggar. För tjockare objekt och väggar är dessa tunneleffekter mindre sannolika. Använd om möjligt konvext skrov eller en liten uppsättning konvexa skrov för dynamiska kroppar.

  • När det är möjligt, använd tjocka konvexa bitar för statisk geometri. Försök att undvika nät, särskilt mycket täta nät.

  • Realistiska massor i kg: Innehåll från olika källor kan interagera i samma scen. Detta fungerar bra om massförhållandet mellan objekten är rimligt. En bra utgångspunkt är att tilldela realistiska massor till kroppar som använder kg.

Utveckla förbättrat meshfysikinnehåll

Spela upp animeringar automatiskt

Du kan lägga till animeringar för automatisk uppspelning till scenen som interagerar med fysikkroppar. Dessa animeringar synkroniseras automatiskt mellan klienter genom att tillfälligt justera uppspelningshastigheten (sakta ned dem eller påskynda dem) på varje klient tills alla klienter har samma animeringstillstånd samtidigt.

Inställningar

  • Spela upp automatiskt aktiverat.
  • Animera fysik rekommenderas (men krävs inte) om animeringen påverkar kolliderare som interagerar med fysikkroppar.
  • Gallringstyp inställd på "Always Animate" (tillämpas automatiskt av Mesh Physics) eftersom animeringen kan påverka fysikkroppar även när de är utanför skärmen.

Skärmbild av inställningarna för animeringskomponenten i Inspector.

Animeringsklippet som används av animeringen för automatisk uppspelning kan använda valfritt omslutningsläge. Användbara alternativ är "Loop" och "Ping Pong".

Skärmbild av tillgångsinställningarna för animeringsklipp i inspektören.

Komponenter

Om du lägger till någon av följande MonoBehaviour komponenter i ett objekt läggs det specifika beteendet till i det här objektet.

Klibbig kropp

Får kroppar att hålla sig till andra kroppar. Det kan användas för att kasta pilar på andra kroppar eller för att fästa en bild på en vägg. Detta genomförs genom att skapa en fast begränsning mellan de två berörda organen. Obs! Den här åtgärden utförs på alla klienter och implementeras därför som ett särskilt nätverksmeddelande.

Skärmbild av skriptalternativen Sticky Body i Inspector.

Inställningar

  • Stick: Definierar om kroppen kommer att hålla sig till dynamiska eller/och statiska kroppar.
  • När: Ibland vill du sticka en snabb kropp när den bara rör vid en annan kropp, och ibland vill du sticka en kropp när den hålls mot en annan kropp under en viss tid, som att vänta på att limmet ska hårdna när du limmat en knapp på en vägg.
  • Kollisionskontroll För att inaktivera specifika kollisioner mellan en kropp och en annan. Normalt kan/bör du använda kollisionslager. Men eftersom det bara finns 32 hårdkodade kollisionslager i Microsoft Mesh kanske det inte är ett alternativ. Här kan du inaktivera specifika organ.
  • Berörda kroppar för kollisionskroppsfilter som används för kollisionskontroll.

Inneslutningsfält

Säkerställer att stela kroppar håller sig inom gränserna för en eller flera utlösare.

Skärmbild av skriptalternativen för inneslutningsfält i Inspector.

För att den här komponenten ska fungera måste den kopplas till en eller flera utlösare. (Dessa utlösarkolliderare kan också kapslas i transformeringshierarkin under som har den GameObject här komponenten kopplad.)

De stela kroppar som påverkas av denna komponent måste redan ligga inom gränserna för dess utlösare kolliderare ("utlösarvolymen") när scenen startar. Mitten av massan av var och en av dessa stela kroppar kommer sedan att begränsas att hålla sig inom gränserna för utlösarvolymen - det kommer inte att vara möjligt att dra eller på annat sätt flytta mitten av massan av dessa stela kroppar någonstans utanför.

Inställningar:

  • Maxavvikelse från inneslutning gör att mitten av massan för en påverkad styvkropp kan gå utanför utlösarvolymerna innan den fästs igen. Detta är en kompromiss för prestandaoptimering: om den tillåtna maxavvikelsen är stor kan brödtexten lämna utlösarvolymen synligt och slå tillbaka, men koden kan undvika att behöva kontrollera och verifiera kroppens position mycket ofta när den vilar eller rör sig långsamt inuti utlösarvolymen.

  • Berörda organ definierar valfria filtreringsvillkor för de organ som påverkas av den här komponenten. (Som standard påverkas alla kroppar.)

Hastighetsvektorfält

Gör det möjligt att accelerera/decelerate en rigidbody tills den når en specifik målhastighet.

Skärmbild av skriptalternativen för riktningshastighetsfält i inspektören.

Den här komponenten styr både hastighetens storlek och hastighetsriktning. Se Velocity Magnitude Field (Hastighetsstorleksfält) för att styra endast storlek och hastighetsriktningsfält för att styra riktningen. Det finns två driftlägen:

  • Om den fästs på en stelkropp styrs denna stelkropp.
  • Om de är anslutna till en utlösare kommer alla stela kroppar som kommer in i denna utlösarvolym att påverkas.

Inställningar:

  • Hastighetstyp definierar om vi arbetar med linjär eller vinkelhastighet.
  • Riktning i lokalt utrymme definierar om målhastigheten anges i det lokala utrymmet för objektet som komponenten är kopplad till.
  • Målhastighet anger önskad hastighetsvektor i meter/sekund (eller radianer/sekund vid vinkelhastighet).
  • Maxacceleration definierar den maximala acceleration som tillämpas för att nå målhastigheten.
  • Accelerationstyp definierar en typ av acceleration för att nå en målhastighet.
    • Omedelbart når målhastigheten omedelbart (samma som konstant acceleration med maxacceleration = oändlighet).
    • Konstant acceleration säkerställer att kroppen når målhastigheten oavsett vad som ligger inom gränserna för inställningen Maximal acceleration .
    • Smooth Approach minskar accelerationen ju närmare du kommer målhastigheten. Det innebär att du i praktiken aldrig kommer att nå målhastigheten. Om det skulle finnas någon extern påverkan, som att gå uppför eller nedförsbacke, kommer detta extra inflytande inte att åsidosättas helt, vilket resulterar i att gå snabbare nedförsbacke än uppför.
  • Berörda organ definierar valfria filtreringsvillkor för de organ som påverkas av den här komponenten. (Som standard påverkas alla kroppar.)

Skalat gravitationsfält

Ändrar hur gravitationen påverkar stela kroppar inom gränserna för en eller flera utlösare.

Skärmbild av skriptalternativen för antigravitationsfält i Inspector.

För att den här komponenten ska fungera måste den kopplas till en eller flera utlösare. (Dessa utlösarkolliderare kan också kapslas i transformeringshierarkin under GameObject som har den här komponenten kopplad.)

Alla stela kroppar som rör vid eller överlappar utlösarkolliderarna ("utlösarvolymen") beter sig enligt gravitationsinställningarna för den här komponenten snarare än den globala fysikgravitationen. Stela kroppar som har Använda gravitation inaktiverad ignoreras.

Det finns ett intressant förhållande mellan uppfattningen av spelarens egen storlek i världen och gravitationen:

  • Om gravitationen är mindre än vad vi är vana vid (objekt är långsammare när de faller) uppfattar spelaren sig vara större – som en jätte.
  • Om gravitationen är större än vad vi är vana vid (objekt är snabbare när de faller) uppfattar spelaren sig själva som mindre – som en mus.

Inställningar:

  • Gravity Preset tillåter val av flera intressanta och användbara förinställningar för egenskapen Gravity Scale : olika himlakroppar (måne, mars, jord, Jupiter), ingen gravitation (yttre rymden) eller inverterad gravitation (upp och ner). Du kan alltid skriva över gravitationsskalan med vilket värde du vill.
  • Gravitationsskalan anger den lokala gravitationen inuti utlösarvolymen i förhållande till den standardfysikgravitation som påverkar scenen. Standardgravitationsskalan 1 gör att gravitationen inte påverkas. större värden ökar gravitationen. 0 tar bort gravitationen; negativa värden växlar gravitationsriktningen.
  • Berörda organ definierar valfria filtreringsvillkor för de organ som påverkas av den här komponenten. (Som standard påverkas alla kroppar.)

Gravitationsfält i omloppsbana

Simulerar gravitationen hos en "leksaksplanet" i din scen.

Skärmbild av skriptalternativen för Gravity Field i Inspector.

För att den här komponenten ska fungera måste den kopplas till en eller flera utlösare. (Dessa utlösarkolliderare kan också kapslas i transformeringshierarkin under GameObject som har den här komponenten kopplad.)

Alla stela kroppar som rör vid eller överlappar utlösarens kolliderare ("utlösarvolymen") dras mot positionen för objektet som har den här komponenten kopplad.

Inställningar:

  • Gravitationen definierar gravitationens omfattning. Detta är accelerationen av den roterande kroppen ("månen") mot den centrala kroppen på ett avstånd på en meter. Eftersom omloppshastigheten är kvrt (gravitation/radie) beskriver detta värde en måns hastighet² i en stabil bana med en radie på en meter.

  • Inaktivera Global Gravity inaktiverar scenens globala fysikgravitationsinställning för kroppar som påverkas av den här komponenten. Som standard kommer den globala scengravitationen fortfarande att påverka din planet och dess månar.

  • Berörda kroppar definierar valfria filtreringsvillkor för de kroppar som kan bli månar i detta gravitationsfält.

  • Force Moons On Circular Orbit är en fuskare som tillämpar vissa milda krafter för att driva månen in i en cirkulär omloppsbana. Motivationen är att det är svårt för en icke-expert att ange kroppens gravitation och initiala hastighet på ett sätt att uppnå en cirkulär omloppsbana. Om det här alternativet är aktiverat börjar dessutom alla månar som placeras inuti gravitationsfältet i Unity Editor automatiskt att kretsa runt sin centrala kropp när scenen läses in.

  • Strength Of Forced Orbit skalar accelerationen som tillämpas för att tvinga månen till en cirkulär omloppsbana.

  • Ställ in Tvingad radie där placeras gör månar som placeras inuti gravitationsfältet i Unity Editor automatiskt att använda sitt ursprungliga avstånd från den centrala kroppen som önskad bana.

  • Ange tvingad radie där tappade gör månar som interaktivt grips och flyttas in i gravitationsfältet automatiskt anta avståndet från den centrala kroppen där de släpptes som sin föredragna bana.

  • Standard force radius definierar standardradien för ovanstående fusk som används om det inte åsidosätts av något av de andra alternativen.

Flytkraftsfält

Simulerar flytkraft av godtyckliga stela kroppar på vatten: Kroppar verkar flyta på den anslutna utlösarvolymen.

Skärmbild av skriptalternativen För flytkraftsfält i inspektören.

För att den här komponenten ska fungera måste den kopplas till en eller flera utlösare. (Dessa utlösarkolliderare kan också kapslas i transformeringshierarkin under GameObject som har den här komponenten kopplad.)

Alla stela kroppar som rör vid eller överlappar utlösarens kolliderare ("utlösarvolymen") upplever flytkrafter (upthrust) för att hålla dem flytande.

Den här komponenten använder formen på styvkroppens kolliderare för att beräkna dess densitet (med andra ord volym dividerad med massa), flytkraft, drag och friktion.

Flytkraft kolliderare

Fördel: Prestanda. Beräkningskostnaden för flytkraftsberäkningarna skalas linjärt med antalet kolliderarhörn. Typiska fysikkolliderare för kroppar, även om de redan är förenklade, är ofta betydligt mer komplexa (när det gäller antalet hörn) än vad som krävs för att flytkraften ska fungera tillräckligt bra.

Så här använder du: Lägg till en (eller flera) ytterligare kolliderare (de kan inaktiveras) i en brödtext. Markera kolliderarna som explicita flytskrov genom att tilldela ett fysikmaterial med namnet BuoyancyHull (exakta stavningsfrågor!) till dem. Konfigurationsinformationen för detta fysikmaterial spelar ingen roll – ett lämpligt fysikmaterial levereras med Mesh toolkit-paketet. Om en kropp har några kolliderare märkta så används endast dessa kolliderare för flytkraftsberäkningar; alla andra kolliderare ignoreras.

Bästa praxis: Explicita flytskrov kolliderar till alla Rigidbody som eventuellt kan kastas in i en BuoyancyField. Det är bäst (och enklast) att använda Kubkollisatorer eftersom de har minst hörn (åtta per kolliderare). Att matcha den exakta visuella formen på den flytande kroppen krävs vanligtvis inte för ett bra resultat. en mycket grov uppskattning räcker vanligtvis.

Inställningar:

  • Densitet är densitet för den simulerade vätskan som "fyller" utlösarvolymen i kilo per kubikmeter. (Standardvärdet representerar den ungefärliga vattentätheten vid rumstemperatur.)
  • Yttyp anger hur komponenten tar prov på vattenytans form för att beräkna flytkrafter.
    • Static Flat förutsätter att vattenytan är perfekt planar och aldrig rör sig från sin ursprungliga position i scenen. Vattenytans position och orientering bestäms bara en gång, när scenen börjar. Det här är det beräkningsmässigt billigaste alternativet.
    • Dynamic Flat förutsätter att vattenytan är perfekt planar men tillåter att den kan röra sig (till exempel kan vattennivån stiga eller sjunka). Vattenytans position och orientering bestäms en gång per ram.
    • Dynamic Flat Per Body har stöd för en vattenyta som inte är planar (till exempel kan den vara vågig). För varje styv kropp som flyter på vattenytan bestäms en lokal planar-uppskattning av vattenytan under styvkroppen en gång per ram, som sedan används för att beräkna flytkrafter för denna styva kropp.
  • Berörda kroppar definierar valfria filtreringsvillkor för de kroppar som kan flyta i detta flytkraftsfält. (Som standard är alla organ berättigade.)
  • Dra styr rörelsemotståndet när styvkroppen träffar vattnet (med andra ord friktion ortogonal till kroppens yta).
  • Hudfriktion styr rörelsemotståndet när styvkroppen flyttas genom vattnet (med andra ord friktion parallellt med kroppens yta).

Viktigt! För att komponenten ska få åtkomst till en rigidbodys trianglar för kolliderarnät måste kryssrutan "Läs/skrivaktiverad" markeras i kolliderarnätets importinställningar . Annars ignoreras kroppen av flytkraftsfältet och kommer att falla genom fältet utan att påverkas av det.

Viktigt! Se till att dina fysikkroppar har rimliga massor för att se till att de beter sig som förväntat i ett flytkraftsfält:

  • Om massan av en rigidbody är osannolikt hög jämfört med dess volym, kommer den att sjunka till botten.
  • Om massan av en rigidbody är osannolikt låg jämfört med dess volym (till exempel Unitys Rigidbody standardvärde för en massaenhet), kommer den bara att sitta ovanpå den simulerade vätskan.

Som standard tar flytkraftsfältet prov på utlösningsvolymens yta för att fastställa formen på vattenytan (med förbehåll för den valda inställningen För vattenytans typ ). Ytor som animeras i CPU-minne kan samplas på det sättet, men ytor som animeras av en GPU-hörnskuggning är inte synliga för skriptet vid körning. Komponenten BuoyancyField tillhandahåller ett skripttillgängligt återanropsdelegat med namnet GetDistanceFromSurface som gör att externa skript kan ange information om en GPU-animerad vattenytans form.

Se komponenten BuoyancyFieldWaves nedan för hur du hämtar en vågig vattenyta med en metod utan kod.

Flytkraft fältvågor

Tillägg till komponenten BuoyancyField som fungerar med en specifik hörnskuggning BuoyancyFieldWaves_VertexPosition (tillgänglig både som en sub-shader-graf och en HLSL-inkluderingsfil). Detta skapar den visuella effekten av en vågig vattenyta tillsammans med motsvarande beteende för objekt som flyter på vattenytan.

Skärmbild av skriptalternativen Buoyancy Field Waves i Inspector.

Den här komponenten måste läggas till i en GameObject som redan har en BuoyancyField komponent tillagd.

Vattenytan som ska animeeras måste levereras som ett platt, tessylerat nät vars gränser är av önskad form av vattenytan när de ses uppifrån och ner. Det material som används för vattenytan måste använda en skuggning som innehåller BuoyancyFieldWaves_VertexPosition underskuggaren för att fastställa nätets hörnpositioner. Du kan använda det inkluderade exempelmaterialet BasicWavyWaterSurface (och skuggdiagrammet med samma namn) som utgångspunkt för din egen skuggningsutveckling.

Inställningar:

  • Waves Mesh Renderer refererar till komponenten MeshRenderer som återger vattenytans nät.
    • Material visar vilket material som används av återgivningsverktyget. Detta är endast för information.
    • Shader visar vilken skuggning som används av materialet. Detta är endast för information.
  • Waves Shader-egenskapsnamn definierar namnen på nödvändiga skuggningsegenskaper som måste exponeras av skuggningen. Dessa egenskaper används av den här komponenten vid körning för att säkerställa att flytkraftsfältets beteende förblir synkroniserat med visuella vattenytans visuella objekt för alla klienter.
    • Skriptkontrollerad tid är namnet på en skuggningsegenskap av typen exponerad floatsom kontinuerligt uppdateras av den här komponenten varje bildruta med en ständigt ökande tid (mätt i sekunder) som synkroniseras mellan alla klienter. Underskuggaren BuoyancyFieldWaves_VertexPosition använder den här delade tiden för att skapa ett vågmönster som förblir synkroniserat på alla klienter och synkroniserat med beteendet för flytkraftsfältet.
    • Våghastighet är namnet på en skuggningsegenskap av typen exponerad floatsom avgör den bashastighet med vilken vågorna sprids vågrätt. Själva egenskapsvärdet måste anges i det material som appliceras på vågytans nät. Om du ställer in detta på noll blir vågytan statisk och avstovande.
    • Våglängd är namnet på en skuggningsegenskap av typen exponerad floatsom avgör vågmönstrets grovhet. Själva egenskapsvärdet måste anges i det material som appliceras på vågytans nät. Mindre värden ger korta krusningar; större värden ger långa, svepande vågor.
    • Våghöjd är namnet på en skuggningsegenskap av typen exponerad floatsom avgör vågornas bashöjd . Själva egenskapsvärdet måste anges i det material som appliceras på vågytans nät. Om du ställer in detta på noll blir vågytan helt platt.

Det inkluderade skuggningsdiagrammet BasicWavyWaterSurface (som används av materialet med samma namn) använder den nödvändiga BuoyancyFieldWaves_VertexPosition hörnunderskuggaren för att producera den vågiga 3D-ytan, men innehåller bara en minimal stand-in-implementering för fragmentskuggaren, vilket gör att den återger ytan som ett oformaterat, oformaterat, halvtransparent nät.

Skärmbild av skuggningsdiagrammet Grundläggande vågig vattenyta i Skuggningsdiagramredigeraren.

Du kan anpassa fragmentsökvägen för en skuggning som används med komponenten BuoyancyFieldWaves helt efter dina behov. Det är dock viktigt att hörnsökvägen för skuggningen använder grafen BuoyancyFieldWaves_VertexPosition under skuggning och att den exponerar de fyra indata för det här underskuggardiagrammet som floatskuggningsegenskaper av typen för den övergripande skuggningsdiagrammet så att komponenten kan komma åt dem vid körning. Om skuggningen inte kan ta med den nödvändiga underskuggningsgrafen eller om någon av de nödvändiga skuggningsegenskaperna inte exponeras visar komponentens inspektör ett felmeddelande vid designtillfället och bärkraften fungerar inte vid körning:

Skärmbild av skriptalternativen Buoyancy Field Waves som visar felmeddelandet: Nödvändig hörnunderskuggning används inte.

Skärmbild av skriptalternativen Buoyancy Field Waves som visar felmeddelandet: Shader-egenskapen som inte exponeras av material.

Exempelskudddiagrammet BasicWavyWaterSurface kan fungera som en stand-in under innehållsutveckling och som utgångspunkt för din egen skuggningsutveckling. Du kan också ta en befintlig skuggning av vattenytan, behålla dess fragmentsökväg och bara ersätta dess hörnsökväg .

Maximal angularhastighet

Åsidosätter den maximala angularhastigheten för en fysikkropp.

Skärmbild av skriptalternativen Max Angular Velocity i Inspector.

Fysikmotorn tillåter inte att styvkroppen överskrider denna vinkelhastighet. Detta kan vara användbart för att antingen begränsa den rullande hastigheten för en viss styvkropp eller för att låta den rulla snabbare än fysikens standard, vilket är 50 radianer per sekund (cirka 8 revolutioner per sekund).

Den maximala angularhastigheten måste anges i radianer per sekund. Det angivna värdet visas också i grader per sekund (180 grader ≈ 3,14 radianer) och revolutioner per sekund (1 revolution = 360 grader ≈ 6,28 radianer).

Hastighetsstorleksfält

Tillåter acceleration/inbromsning av en styvkropp tills den når en hastighet som är inom ett tillåtet intervall.

Skärmbild av alternativen för Velocity Field-skript i Inspector.

Den här komponenten styr hastighetens omfattning och behåller den aktuella riktningen. Om objektet fortfarande är kvar väljer det en slumpmässig riktning under en bildrutas varaktighet. Det finns två driftlägen:

  • Om den fästs på en stelkropp styrs denna stelkropp.
  • Om de är anslutna till en utlösare kommer alla stela kroppar som kommer in i denna utlösarvolym att påverkas.

Inställningar:

  • Hastighetstyp definierar om vi arbetar med linjär eller vinkelhastighet.
  • Hastighetsgränser anger de önskade gränserna för lägsta och högsta hastighet i meter/sekund (eller radianer/sekund vid vinkelhastighet). Om den aktuella hastigheten är lägre än minimivärdet kommer den att accelerera, om det är mer än det maximala värdet kommer kroppen att avta. Om den aktuella hastigheten redan ligger inom gränserna har skriptet ingen effekt. Om du vill ange en specifik målhastighet anger du minimum och maximum till samma värde.
  • Maxacceleration definierar den maximala acceleration som tillämpas för att nå målhastigheten.
  • Accelerationstyp definierar en typ av acceleration för att nå en målhastighet.
    • Omedelbart når hastighetsgränsen omedelbart (samma som konstant acceleration med maxacceleration = oändlighet).
    • Konstant acceleration säkerställer att kroppen når målhastigheten oavsett vad som ligger inom gränserna för inställningen Maximal acceleration .
    • Smooth Approach minskar accelerationen ju närmare du kommer målhastigheten. Det innebär att du i praktiken aldrig kommer att nå målhastigheten. Om det skulle finnas någon extern påverkan, som att gå uppför eller nedförsbacke, kommer detta extra inflytande inte att åsidosättas helt, vilket resulterar i att gå snabbare nedförsbacke än uppför.
  • Berörda organ definierar valfria filtreringsvillkor för de organ som påverkas av den här komponenten. (Som standard påverkas alla kroppar.)

Justera fält

Justerar brödtexten mot den angivna axeln.

Skärmbild av alternativen för att justera fältskript i inspektören.

Den här komponenten lägger till vridmoment i kroppen för att justera den till en specifik riktning. Observera att vridmoment alltid tillämpas i den riktning som roterar kroppen mot målet. Det finns två driftlägen:

  • Om den fästs på en styv kropp justeras denna styva kropp.
  • Om de är anslutna till en utlösare kommer alla stela kroppar som kommer in i den här utlösarvolymen att justeras.

Inställningar:

  • RigidbodyAxeln anger axeln för den påverkade styvkroppen som ska justeras mot målet.
  • Justeringsläget innehåller olika lägen för att ange måljustering:
    • I Globalt utrymme för att ange måljustering i globalt utrymme.
    • I Lokalt utrymme för att ange måljustering i lokalt utrymme (är bara meningsfullt med utlösarvolym).
    • Hastighetsriktning för att justera kroppen till dess linjära hastighet.
    • Mot game object för att justera kroppen mot ett mål gameobject.
  • Måljustering anger målriktningen för justeringen. (Endast när Justeringsläget är inställt på I globalt utrymme eller Lokalt utrymme.)
  • Målspelobjektet anger målriktningen för justeringen. (Endast när Justeringsläget är inställt på Mot spelobjekt.)
  • Torque Multiplier skalar det tillämpade vridmomentet för att nå måljusteringen; en högre multiplikator roterar kroppen snabbare (mellan 1 och 1000).
  • Dämpningskoefficienten anger dämpningsfaktorn (mellan 0 och 5). När den anges under 1 kan brödtexten svänga runt målorienteringen.
  • Berörda organ definierar valfria filtreringsvillkor för de organ som påverkas av den här komponenten. (Som standard påverkas alla kroppar.)

Hastighetsriktningsfält

Gör det möjligt att styra en rigidbody tills hastigheten når en målriktning.

Skärmbild av skriptalternativen hastighetsriktningsfält i Inspector.

Den här komponenten styr endast hastighetens riktning och behåller den aktuella hastigheten. Det finns två driftlägen:

  • Om den fästs på en stelkropp styrs denna stelkropp.
  • Om de är anslutna till en utlösare kommer alla stela kroppar som kommer in i denna utlösarvolym att påverkas.

Inställningar:

  • Hastighetstyp definierar om vi arbetar med linjär eller vinkelhastighet.
  • Följ Spelobjektet definierar om målet är en fördefinierad riktning eller en riktning mot en specifik GameObject. Fungerar endast för linjär hastighet.
  • Måltext (om Follow Game Object är inställt på true): anger önskad följriktning.
  • Målriktningen anger önskad riktning. Det här värdet normaliseras, så storleken har ingen effekt.
  • Direction In Local Space definierar om riktningen anges i en lokal transformering av explosionen.
  • Maxacceleration definierar den maximala acceleration som tillämpas för att nå målhastigheten.
  • Accelerationstyp definierar en typ av acceleration för att nå en målhastighet.
    • Omedelbart når målriktningen omedelbart (samma som konstant acceleration med maxacceleration = oändlighet).
    • Konstant acceleration säkerställer att kroppen når målhastigheten oavsett vad som ligger inom gränserna för inställningen Maximal acceleration .
    • Smooth Approach minskar accelerationen ju närmare du kommer målhastigheten. Det innebär att du i praktiken aldrig når målhastigheten. Dessutom, om det finns någon extern påverkan som att gå uppför eller nedförsbacke, kommer detta extra inflytande inte att åsidosättas helt, vilket resulterar i att gå snabbare nedförsbacke än uppför.
  • Berörda organ definierar valfria filtreringsvillkor för de organ som påverkas av den här komponenten. (Som standard påverkas alla kroppar.)

Magnetkropp

Ger kroppen en magnetisk egenskap som lockar eller stöter bort andra kroppar.

Skärmbild av alternativen för magnetiska brödtextskript i Inspector.

För att den här komponenten ska fungera måste den kopplas till en eller flera kolliderare. (Dessa kolliderare kan också kapslas i transformeringshierarkin under som GameObject har den här komponenten kopplad.) Varje kolliderare uppvisar en kraft på andra stela kroppar som är tillräckligt nära denna kolliderare.

Inställningar:

  • Styrka definierar magnetens acceleration vid kontaktpunkten (när avståndet mellan kolliderarna är noll).
  • Avståndet av påverkan kontrollerar spänna av den magnetiska styrkan. Magnetisk kraft tillämpas endast om det kortaste avståndet mellan kolliderare är mindre.
  • Fälttyp definierar hur magnetkraften försvagas med avståndet.
    • Konstanten förutsätter att den magnetiska kraften är samma oberoende av avståndet.
    • Linjärt förutsätter att den magnetiska kraften sjunker linjärt från Styrka till noll (vid påverkansavståndet).
    • Invertera förutsätter ett omvänt proportionellt beroende av avståndet.
    • Inverterad kvadrat förutsätter ett omvänt proportionellt beroende av avståndet kvadrat (liknar en riktig magnet).
  • Magnetpolen styr vilka objekt som lockas till eller avvisas av det här objektet.
    • Nordpolen lockar Sydpolen och stöter bort Nordpolen.
    • Sydpolen lockar Nordpolen och stöter bort Sydpolen.
    • Magnet lockar både Sydpolen och Nordpolen.
  • Inaktivera gravitation vid kontakt: Om detta är aktiverat och magnetens styrka är två gånger större än gravitationen inaktiveras gravitationen för kroppar som är i kontakt med denna magnet. Ett av objekten måste vara statiskt för att detta ska påverka. Detta används ofta för att förhindra att kroppar glider ner i en vägg.

Sfärisk explosion

Skapar en explosion som gör att alla kroppar inom en viss radie flyttas utåt.

Skärmbild av alternativen för sfäriska explosionsskript i Inspector.

Explosionskraften beror på massan av en styvkropp (och potentiellt avståndet från explosionscentret).

Inställningar:

  • Styrka definierar effekten av explosionen på kroppar i meter/sekund. Den faktiska hastighetsändringen är mindre beroende på explosionstyp och kritisk massa (se nedan).
  • Påverkansavstånd styr explosionskraftens räckvidd.
  • Fälttyp definierar hur explosionseffekten försvagas med avståndet.
    • Konstant förutsätter att effekten är oberoende av avståndet.
    • Linjärt släpp förutsätter att effekten sjunker från maximalt till noll (vid påverkansavståndet).
  • Kritisk massa definierar massan av kroppen som inte påverkas av explosionen. Tyngre kroppar känner mindre effekt än lättare kroppar. Till exempel kommer en rigidbody som väger en tredjedel av den kritiska massan att känna två tredjedelar av hastighetsändringen.
  • Angular Impulse Scale definierar var kraften tillämpas. Om värdet är 0 tillämpas kraft i mitten av massan, vilket innebär att ingen rotation. Om värdet är 1 tillämpas kraften vid närmaste punkt till explosionen.
  • Ocklusion Om aktiverad, känner objekt som döljs bakom andra objekt inte explosionen. Endast en enda stråle mellan mitten av explosionen och mitten av massan kontrolleras för ocklusion.

Riktningsexplosion

Skapar en explosion som gör att alla kroppar i en utlösare rör sig i en specifik riktning.

Skärmbild av skriptalternativen Directional Eplosion i Inspector.

Explosionskraften beror på massan av en stelkropp. För att den här komponenten ska fungera måste den kopplas till en utlösare. Alla kroppar i utlösaren kolliderar påverkas.

Inställningar:

  • Styrka definierar effekten av explosionen på kroppar i meter/sekund. Den faktiska hastighetsändringen är mindre beroende på kritisk massa (se nedan).
  • Riktningen definierar riktningen för explosionen. Det här värdet normaliseras, så storleken har ingen effekt.
  • Direction In Local Space definierar om riktningen anges i en lokal transformering av explosionen.
  • Kritisk massa definierar massan av kroppen som inte påverkas av explosionen. Tyngre kroppar känner mindre effekt än lättare kroppar. Till exempel kommer en rigidbody som väger en tredjedel av den kritiska massan att känna två tredjedelar av hastighetsändringen.
  • Angular Impulse Scale definierar var kraften tillämpas. Om värdet är 0 tillämpas kraft i mitten av massan, vilket innebär att ingen rotation. Om värdet är 1 tillämpas kraften vid närmaste punkt till explosionen.
  • Berörda organ definierar valfria filtreringsvillkor för de organ som påverkas av den här komponenten. (Som standard påverkas alla kroppar.)

Gemensam stabilisering

Stabiliserar begränsningssystemet genom att justera styvkroppens tröghets tensor.

Skärmbild av skriptalternativen för gemensam stabilisering i Inspector.

Skriptet fungerar på alla underordnade med Rigidbody- eller Joint-komponenten bifogad.

Inställningar:

  • Stabiliseringsfaktor definierar hur mycket du offrar fysisk korrekthet för stabilitet. Till exempel 1 -> mestadels fysik korrekt, 4 -> kompromiss, 10 -> stabil med artefakter.
  • Gemensam projektion möjliggör begränsningsprojicering för alla underordnade. Detta kan dramatiskt förbättra stabiliteten men offrar fysisk korrekthet. Det fungerar bara på Konfigurerbara och Tecken leder.
  • Projektionsavstånd definierar den maximala tillåtna överträdelsen av begränsningar. Försök att ställa in det här värdet så högt som möjligt för att undvika fysikproblem.

Studsande yta

Skapar en studsande yta som gör att alla kolliderande objekt studsar av med en fördefinierad hastighet.

Skärmbild av alternativen för studsande surface-skript i Inspector.

Inställningar:

  • Bounce Velocity Magnitude definierar objektets minsta och högsta hastighetsstorlek efter studsen. Se Studseffekt för hur riktningen bestäms. Ange Min och Max till lika med värde om du vill ange en enda målhastighet.
  • Studseffekt definierar det avsedda beteendet för studsande objekt.
    • Perfekt studs: vinkeln för inkommande hastighet till kollisionsplanets normala är samma som vinkeln för utgående hastighet.
    • Ange hastighetsstorlek: vinkeln för utgående hastighet till normal påverkas av friktion.
    • Ange normal hastighet: liknar Ange hastighetsstorlek, men storleken på studshastigheten definierar storleken på hastigheten vinkelrätt mot planet (normal hastighet).
    • Studsa mot målkroppen: riktningen för utgående hastighet riktas mot en målkropp. Om det här alternativet är markerat visas egenskapen Måltext och måste anges.
  • Friktion styr hur mycket tangentiell hastighet som går förlorad vid kollision. När värdet är 0 behåller det studsande objektet tangentiell hastighet. När det är inställt på 1 studsar objektet i riktning vinkelrätt mot ytan (tangentiell hastighet är 0). För värden mer än 1 studsar objektet bakåt.

Mitten av massförskjutning

Förskjuter mitten av massan av en rigidbody.

Skärmbild av alternativen för center för massförskjutningsskript i Inspector.

Inställningar:

  • Förskjutning i lokala koordinater definierar förskjutningen i lokala koordinater.

Omfång för lokal fysik

Alla stela kroppar i hierarkin under den här komponenten synkroniseras inte mellan klienter. Det här skriptet ska läggas till i stela kroppar vars positioner eller rotationer anges via ett visuellt skript eller en animering.

Skärmbild av inställningarna för omfång för lokal fysik i inspektören.

Lär dig mer om mesh visual scripting physics event nodes.Learn about Mesh Visual Scripting physics event nodes.

Kasta bana

Beräknar styvkroppens framtida position i fritt utrymme under tyngdkraftens effekt.

Skärmbild av alternativen för skriptet Kasta bana i inspektören.

Inställningar:

  • Rigidbody-läge: När det är inställt på sant tas stelkroppens position och hastighet som initiala förhållanden. Aktiverar beräkning av framtida positioner i realtid.
  • Rigidbody (gäller endast när Rigidbody-läget är inställt på sant.): Definierar vilken rigidkropp som tas.
  • Initial hastighet: (gäller endast när Rigidbody Mode är inställt på false): Definierar den initiala hastigheten. Den initiala positionen tas från positionen för GameObject som den här komponenten är kopplad till.
  • Maximalt antal punkter: Definierar det maximala antalet beräknade punkter.
  • Tidssteg: Definierar tidsskillnaden mellan framtida positioner.
  • Gravitation: Det här är gravitationsaccelerationen.
  • Radåtergivning: Anger linjeåtergivningen som positionen för punkter kopieras till. Detta visar kastbanan.

Återställ brödtexttransformeringar

När den här komponenten utlöses av ett visuellt skript återställs positionen och rotationen för alla fysikkroppar på samma transformering eller eventuella underordnade transformeringar till deras initiala värden.

Skärmbild av komponenten Återställ brödtexttransformering i Inspector.

Inställningar:

  • Första automatiska spara: Om du väljer det här alternativet använder du transformeringar vid start av miljön när återställningen transformeras. Om det är avmarkerat måste du använda ett visuellt skript för att anropa funktionen Spara brödtext transformerar nu för att spara återställningstransformeringar innan du utför en återställning.

Funktioner som är tillgängliga för visuella skript

  • Återställ kroppstransformering nu: Återställer positionen och rotationen för alla fysikkroppar i omfånget för komponenten Reset Body Transforms till deras senast sparade återställningstransformering. Anropa detta endast på en klient.

Skärmbild av komponenten Återställ brödtexttransformering i redigeringsläge med knappen Återställ brödtext transformerar nu endast i uppspelningsläge markerad.

Skärmbild av komponenten Återställ brödtexttransformering i uppspelningsläge med knappen Återställ brödtexttransformering nu markerad.

  • Spara brödtexttransformeringar Sparar nu den aktuella positionen och rotationen för alla fysikkroppar i omfånget för komponenten Återställ kroppstransformering när återställningen transformeras. Anropa detta endast på en klient.

Nästa steg