Delen via


Mesh Physics Programmer's Guide

Algemene tips

U kunt beginnen met het scannen van de Unity-natuurkundedocumenten. Er zijn tal van bronnen beschikbaar voor het optimaliseren van fysica in Unity.

Mesh Physics wordt geleverd met een aantal extra uitdagingen. Hier volgen enkele tips om ze te helpen overwinnen.

  • Maak dikke muren: Netwerksynchronisatie kan stijve lichamen enigszins verplaatsen. Als gevolg hiervan ziet u wat extra penetratie tussen objecten. Kleine dynamische lichamen kunnen door dunne muren worden gepusht. Voor dikkere objecten en wanden zijn deze tunneleffecten minder waarschijnlijk. Gebruik indien mogelijk convexe romp of een kleine set convexe rompen voor dynamische lichamen.

  • Gebruik indien mogelijk dikke convexe stukken voor statische geometrie. Probeer meshes te vermijden, met name zeer dichte meshes.

  • Realistische massa's in kg: Inhoud van verschillende bronnen kan in dezelfde scène communiceren. Dit werkt goed als de massaverhoudingen tussen de objecten redelijk zijn. Een goed uitgangspunt is om realistische massa's toe te wijzen aan lichamen met kg.

Verbeterde Mesh Physics-inhoud ontwikkelen

Animaties automatisch afspelen

U kunt automatisch afspeelanimaties toevoegen aan de scène die interactie heeft met fysica-lichamen. Deze animaties worden automatisch gesynchroniseerd tussen clients door hun afspeelsnelheid tijdelijk aan te passen (ze te vertragen of te versnellen) op elke client totdat alle clients tegelijkertijd dezelfde animatiestatus hebben.

Instellingen

  • Automatisch afspelen ingeschakeld.
  • Animate Physics aanbevolen (maar niet vereist) als de animatie botst die interactie hebben met fysica lichamen.
  • Het type voor het afdwingen is ingesteld op 'Always Animate' (automatisch afgedwongen door Mesh Physics), omdat de animatie zelfs van invloed kan zijn op fysica-lichamen, zelfs als ze niet op het scherm staan.

Schermafbeelding van de instellingen voor animatieonderdelen in Inspector.

De animatieclip die wordt gebruikt door de animatie die automatisch wordt afgespeeld, kan elke terugloopmodus gebruiken. Handige keuzes zijn 'Lus' en 'Ping Pong'.

Schermafbeelding van de instellingen voor de animatieclipasset in de Inspector.

Onderdelen

Als u een van de volgende MonoBehaviour onderdelen aan een object toevoegt, wordt het specifieke gedrag aan dit object toegevoegd.

Plaklichaam

Maakt lichamen aan andere lichamen. Het kan worden gebruikt om worpen te gooien bij andere lichamen of om een foto op een muur te bevestigen. Dit wordt geïmplementeerd door een vaste beperking te creëren tussen de twee betrokken instanties. Opmerking: Deze bewerking wordt uitgevoerd op alle clients en wordt daarom geïmplementeerd als een speciaal netwerkbericht.

Schermafbeelding van de opties voor plaktekstscript in Inspector.

Instellingen

  • Stick: Definieert of het lichaam blijft hangen aan dynamische of/en statische lichamen.
  • Wanneer: Soms wilt u een snel lichaam plakken wanneer het gewoon een ander lichaam aanraakt, en soms wilt u een lichaam plakken wanneer het gedurende een bepaalde tijd tegen een ander lichaam wordt gehouden, zoals wachten op lijm om te harden wanneer u een knop op een muur lijmt.
  • Aanvaringsbesturing Om specifieke botsingen tussen het ene lichaam en het andere uit te schakelen. Normaal gesproken kunt/moet u botsingslagen gebruiken. Omdat er echter slechts 32 hard-coded botsingslagen in Microsoft Mesh zijn, is dit mogelijk geen optie. Hier kunt u specifieke lichamen uitschakelen.
  • Getroffen lichamen voor het filter Voor botsingslichaam toegepast op Botsingsbeheer.

Insluitingsveld

Zorgt ervoor dat stijve lichamen binnen de grenzen van een of meerdere trigger-colliders blijven.

Schermopname van de scriptopties voor insluitingsvelden in Inspector.

Dit onderdeel werkt alleen als deze is gekoppeld aan een of meer trigger-colliders. (Deze trigger-colliders kunnen ook worden genest in de transformatiehiërarchie onder het GameObject onderdeel waaraan dit onderdeel is gekoppeld.)

De stijve lichamen die door dit onderdeel worden beïnvloed, moeten zich al binnen de grenzen van de trigger colliders (het "triggervolume") bevinden wanneer de scène wordt gestart. Het midden van de massa van elk van deze stijve lichamen zal dan worden beperkt om binnen de grenzen van het triggervolume te blijven - het zal niet mogelijk zijn om de centra van massa van deze stijve lichamen overal buiten te trekken of anderszins te verplaatsen.

Instellingen:

  • Met maximale afwijking van containment kan het midden van de massa van een beïnvloede stijve iemand iets buiten de triggervolumes gaan voordat deze weer wordt ingelijnd. Dit is een afweging tussen prestatiesoptimalisatie: als de toegestane maximumdeviatie groot is, kan het lichaam het triggervolume zichtbaar verlaten en weer uitlijnen, maar de code kan voorkomen dat de positie van de hoofdtekst zeer vaak moet worden gecontroleerd en gecontroleerd wanneer het rust of langzaam binnen het triggervolume beweegt.

  • Betrokken lichamen definiëren optionele filtervoorwaarden voor de lichamen die door dit onderdeel worden beïnvloed. (Standaard worden alle lichamen beïnvloed.)

Velocity Vector Field

Hiermee kunt u een stijve persoon versnellen/vertragen totdat deze een specifieke doelsnelheid bereikt.

Schermopname van de scriptopties Directional Velocity Field in de Inspector.

Dit onderdeel bepaalt zowel de grootte als de richting van snelheid. Zie Het veld Snelheidsgrootte om alleen de grootte en het veld Snelheidsrichting te bepalen om alleen de richting te bepalen. Er zijn twee bewerkingsmodi:

  • Als hij aan een rigide wordt bevestigd, zal deze stijfheid gecontroleerd worden.
  • Als deze is gekoppeld aan een triggerbotser, worden alle stijve lichamen die dit triggervolume binnenkomen, beïnvloed.

Instellingen:

  • Het type snelheid bepaalt of we aan lineaire of hoekvormige snelheid werken.
  • De richting in de lokale ruimte bepaalt of de doelsnelheid is opgegeven in de lokale ruimte van het object waaraan het onderdeel is gekoppeld.
  • Doelsnelheid stelt de gewenste snelheidsvector in meters/seconde (of radialen/seconde in geval van hoekvormige snelheid).
  • Max Acceleration definieert de maximumversnelling die wordt toegepast om de doelsnelheid te bereiken.
  • Het type versnelling definieert een type versnelling om een doelsnelheid te bereiken.
    • Onmiddellijk bereikt u de doelsnelheid (gelijk aan constante versnelling met maxversnelling = oneindigheid).
    • Constante versnelling zorgt ervoor dat de body de doelsnelheid bereikt, ongeacht wat binnen de grenzen van de instelling Max Acceleration valt.
    • Smooth Approach vermindert de versnelling zo dichter bij de doelsnelheid. Dit betekent dat u in de praktijk nooit de doelsnelheid zult bereiken. Als er ook externe invloed is, zoals omhoog of omlaag gaan, wordt deze extra invloed niet volledig overschreven, wat resulteert in een snellere afdaling dan bergopwaarts.
  • Betrokken lichamen definiëren optionele filtervoorwaarden voor de lichamen die door dit onderdeel worden beïnvloed. (Standaard worden alle lichamen beïnvloed.)

Geschaald zwaartekrachtveld

Wijzigt hoe zwaartekracht van invloed is op stijve lichamen binnen de grenzen van een of meer trigger-colliders.

Schermafbeelding van de scriptopties voor antigraviteitsvelden in inspector.

Dit onderdeel werkt alleen als deze is gekoppeld aan een of meer trigger-colliders. (Deze triggerbotsers kunnen ook worden genest in de transformatiehiërarchie onder het GameObject waaraan dit onderdeel is gekoppeld.)

Eventuele stijve lichamen die de trigger colliders (het "triggervolume") raken of overlappen, gedragen zich volgens de zwaartekrachtinstellingen van dit onderdeel in plaats van de zwaartekracht van de globale fysica. Stijve lichamen die gebruikmaken van Gravity uitgeschakeld, worden genegeerd.

Er is een interessante relatie tussen de perceptie van de eigen grootte van de speler in de wereld en de zwaartekracht:

  • Als de zwaartekracht kleiner is dan wat we gewend zijn (objecten zijn langzamer wanneer ze vallen), ziet de speler zichzelf als groter – zoals een reus.
  • Als de zwaartekracht groter is dan wat we gewend zijn (objecten zijn sneller wanneer ze vallen), ziet de speler zichzelf kleiner – zoals een muis.

Instellingen:

  • Gravity Preset maakt het mogelijk om verschillende interessante en nuttige voorinstellingen voor de eigenschap Gravity Scale te selecteren: verschillende hemellichaampen (maan, Mars, Aarde, Jupiter), geen zwaartekracht (buitenruimte) of omgekeerde zwaartekracht (omhoog). U kunt de Zwaartekrachtschaal altijd overschrijven met elke gewenste waarde.
  • Gravity Scale stelt de lokale zwaartekracht in het triggervolume in ten opzichte van de standaardfysica-zwaartekracht die van invloed is op de scène. De standaard zwaartekrachtschaal van 1 laat de zwaartekracht ongewijzigd; grotere waarden verhogen de zwaartekracht; 0 verwijdert zwaartekracht; negatieve waarden veranderen de zwaartekrachtrichting.
  • Betrokken lichamen definiëren optionele filtervoorwaarden voor de lichamen die door dit onderdeel worden beïnvloed. (Standaard worden alle lichamen beïnvloed.)

Orbital Gravity Field

Simuleert de zwaartekracht van een "speelgoed planeet" in uw scène.

Schermopname van de scriptopties zwaartekrachtveld in de Inspector.

Dit onderdeel werkt alleen als deze is gekoppeld aan een of meer trigger-colliders. (Deze triggerbotsers kunnen ook worden genest in de transformatiehiërarchie onder het GameObject waaraan dit onderdeel is gekoppeld.)

Eventuele stijve lichamen die de trigger colliders (het "triggervolume") raken of overlappen, worden naar de positie van het object getrokken waarop dit onderdeel is bevestigd.

Instellingen:

  • Zwaartekracht definieert de grootte van de zwaartekracht. Dit is de versnelling van het baanlichaam (de "maan") naar het centrale lichaam op een afstand van één meter. Aangezien de orbitale snelheid sqrt (zwaartekracht/straal) is, beschrijft deze waarde de snelheids² van een maan in een stabiele baan bij een straal van één meter.

  • Als u Global Gravity uitschakelt, wordt de globale zwaartekrachtinstelling van de scène uitgeschakeld voor lichamen die door dit onderdeel worden beïnvloed. De zwaartekracht van de wereldscène zal standaard nog steeds van invloed zijn op uw planeet en zijn manen.

  • Getroffen lichamen definieert optionele filtervoorwaarden voor de lichamen die maanen in dit zwaartekrachtveld kunnen worden.

  • Force Moons On Circular Orbit is een cheat die enkele zachte krachten toepast om de maan in een cirkelvormige baan te duwen. De motivatie is dat het moeilijk is voor een niet-deskundige om de zwaartekracht en de initiële snelheid van de lichamen in te stellen op een manier om een cirkelvormige baan te bereiken. Als deze optie is ingeschakeld, beginnen alle manen die in het zwaartekrachtveld in Unity Editor worden geplaatst, automatisch een baan om hun centrale lichaam te draaien wanneer de scène wordt geladen.

  • De kracht van geforceerde baan schaalt de versnelling die wordt toegepast om de maan op een cirkelvormige baan af te dwingen.

  • Set Forced Radius Where Placed maakt maanen die in het zwaartekrachtveld in Unity Editor worden geplaatst, nemen automatisch hun initiële afstand van het centrale lichaam aan als hun voorkeursbaan.

  • Set Forced Radius Where Dropped maakt manen die interactief worden gepakt en verplaatst naar het zwaartekrachtveld automatisch de afstand van het centrale lichaam waar ze werden neergezet als hun favoriete baan.

  • Standaard force radius definieert de standaard radius voor de bovenstaande cheat die wordt gebruikt, tenzij overschreven door een van de andere opties.

Drijfveld

Simuleert drijfkracht van willekeurige stijve lichamen op water: Lichamen lijken op het aangesloten triggervolume te zweven.

Schermopname van de scriptopties voor Buoyancy Field in de Inspector.

Dit onderdeel moet worden gekoppeld aan een of meer trigger-colliders. (Deze triggerbotsers kunnen ook worden genest in de transformatiehiërarchie onder het GameObject waaraan dit onderdeel is gekoppeld.)

Eventuele stijve lichamen die de trigger-colliders (het "triggervolume") raken of overlappen, ervaren drijfkracht (upthrust) om ze te laten ontstaan.

Dit onderdeel maakt gebruik van de vorm van de stijve botsers om de dichtheid te berekenen (met andere woorden, volume gedeeld door massa), drijfkracht, slepen en wrijving.

Drijfkracht Colliders

Voordeel: prestaties. De rekenkosten van de drijfberekeningen worden lineair geschaald met het aantal hoekpunten van de collider. Typische fysica botsers voor lichamen, zelfs als ze al zijn vereenvoudigd, zijn vaak aanzienlijk complexer (qua aantal hoekpunten) dan vereist is dat drijfkracht goed genoeg werkt.

Procedure: Voeg een (of meerdere) extra colliders (ze kunnen worden uitgeschakeld) toe aan een hoofdtekst. Markeer de colliders als expliciete drijf rompen door een fysica-materiaal met de naam BuoyancyHull (exacte spelling is van belang!) aan hen toe te wijzen. De configuratiedetails van dit fysicamateriaal maken niet uit- een geschikt fysicamateriaal wordt geleverd met het Mesh toolkit-pakket. Als een lichaam zo'n colliders heeft gemarkeerd, worden alleen deze colliders gebruikt voor drijfberekeningen; alle andere bots worden genegeerd.

Best practices: Expliciete drijfkracht botst tegen elke rigide die mogelijk in een BuoyancyField kan worden gegooid. Het is het beste (en eenvoudigste) om kubusbotsers te gebruiken omdat ze de kleinste hoekpunten (acht per collider) hebben. Het aanpassen van de exacte visuele vorm van het drijflichaam is meestal niet vereist voor een goed resultaat; een zeer grove benadering is meestal voldoende.

Instellingen:

  • De dichtheid is de dichtheid van de gesimuleerde vloeistof die het triggervolume vult in kilogram per kubieke meter. (De standaardwaarde vertegenwoordigt de geschatte dichtheid van water bij kamertemperatuur.)
  • Oppervlaktetype geeft aan hoe het onderdeel de vorm van het wateroppervlak steekt om drijfkracht te berekenen.
    • Static Flat gaat ervan uit dat het wateroppervlak perfect planar is en nooit van zijn beginpositie in de scène beweegt. De positie en stand van het wateroppervlak wordt slechts één keer bepaald, wanneer de scène begint. Dit is de rekenkundige goedkoopste optie.
    • Dynamisch vlak gaat ervan uit dat het wateroppervlak perfect planair is, maar dat het kan bewegen (bijvoorbeeld het waterniveau kan stijgen of zinken). De positie en stand van het wateroppervlak wordt eenmaal per frame bepaald.
    • Dynamic Flat Per Body ondersteunt een wateroppervlak dat niet planar is (het kan bijvoorbeeld golvend zijn). Voor elk stijf lichaam dat op het wateroppervlak drijft, wordt een lokale planaire benadering van het wateroppervlak onder de stijvebody eenmaal per frame bepaald, die vervolgens wordt gebruikt om drijfkracht voor deze stijfheid te berekenen.
  • Betrokken lichamen definiëren optionele filtervoorwaarden voor de lichamen die in dit drijfveld kunnen zweven. (Standaard komen alle lichamen in aanmerking.)
  • Sleep de bewegingsweerstand naarmate de stijve iemand het water raakt (met andere woorden, wrijving orthogonaal naar het oppervlak van het lichaam).
  • De wrijving van de huid regelt de bewegingsweerstand omdat het stijve lichaam door het water wordt verplaatst (met andere woorden, wrijving parallel aan het oppervlak van het lichaam).

Belangrijk Als u wilt dat het onderdeel toegang krijgt tot de driehoeken van botsende mesh van iemand, moet het selectievakje Lezen/schrijven ingeschakeld zijn ingeschakeld in de importinstellingen van de collider mesh. Anders wordt het lichaam genegeerd door het drijfveld en zal het veld door het veld vallen zonder dat dit wordt beïnvloed.

Belangrijk Zorg ervoor dat uw fysica lichamen plausibele massa's hebben om ervoor te zorgen dat ze zich gedragen zoals verwacht in een drijfveld:

  • Als de massa van een stijf iemand onopgemerkt hoog is in vergelijking met het volume, zal het naar beneden zinken.
  • Als de massa van een stijf iemand onweerstaanbaar laag is in vergelijking met het volume (bijvoorbeeld de standaardwaarde van Unity Rigidbody van één massaeenheid), zal deze gewoon op de gesimuleerde vloeistof zitten.

Standaard steekt het drijfveld het oppervlak van het triggervolume af om de vorm van het wateroppervlak te bepalen (afhankelijk van de gekozen instelling wateroppervlaktype ). Surfaces met animatie in CPU-geheugen kunnen op die manier worden bemonsterd, maar oppervlakken die zijn geanimeerd door een GPU-hoekpunt arcering zijn tijdens runtime niet zichtbaar voor het script. Het BuoyancyField onderdeel biedt een door scripts toegankelijke callback-gemachtigde met de naam GetDistanceFromSurface waarmee externe scripts informatie kunnen opgeven over een gpu-geanimeerde wateroppervlakvorm.

Zie het BuoyancyFieldWaves onderstaande onderdeel voor het verkrijgen van een golvend wateroppervlak met een no-code-benadering.

Drijfveldgolven

Invoegtoepassing voor het BuoyancyField onderdeel dat werkt met een specifieke hoekpunt-shader ( BuoyancyFieldWaves_VertexPosition beschikbaar als een sub-shadergrafiek en een HLSL-include-bestand). Hierdoor ontstaat het visuele effect van een golvend wateroppervlak samen met het bijbehorende gedrag van objecten die op het wateroppervlak zweven.

Schermopname van de scriptopties voor Buoyancy Field Waves in de Inspector.

Dit onderdeel moet worden toegevoegd aan een GameObject waaraan al een BuoyancyField onderdeel is toegevoegd.

Het wateroppervlak dat moet worden geanimeerd moet worden geleverd als een vlakke, gessseleerde mesh waarvan de grenzen van de gewenste vorm van het wateroppervlak zijn wanneer ze van boven naar beneden worden gezien. Het materiaal dat voor het wateroppervlak wordt gebruikt, moet gebruikmaken van een arcering die de sub-shader bevat om de BuoyancyFieldWaves_VertexPosition hoekpuntposities van het mesh te bepalen. U kunt het meegeleverde voorbeeldmateriaal BasicWavyWaterSurface (en de arceringsgrafiek met dezelfde naam) gebruiken als uitgangspunt voor uw eigen arceringsontwikkelingen.

Instellingen:

  • Waves Mesh Renderer verwijst naar het MeshRenderer onderdeel dat de wateroppervlakgaas weergeeft.
    • Materiaal toont welk materiaal wordt gebruikt door de renderer. Dit is alleen voor informatie.
    • Shader laat zien welke shader wordt gebruikt door het materiaal. Dit is alleen voor informatie.
  • De eigenschapsnamen van Waves Shader definiëren de namen van vereiste shader-eigenschappen die door de shader moeten worden weergegeven. Deze eigenschappen worden tijdens runtime door dit onderdeel geopend om ervoor te zorgen dat het gedrag van het drijfveld synchroon blijft met de wateroppervlakvisuals voor alle clients.
    • Scriptgestuurde tijd is de naam van een weergegeven float-type shader-eigenschap die door dit onderdeel voortdurend wordt bijgewerkt met een voortdurend toenemende tijd (gemeten in seconden) die wordt gesynchroniseerd op alle clients. De BuoyancyFieldWaves_VertexPosition sub-shader gebruikt deze gedeelde tijd om een golfpatroon te maken dat gesynchroniseerd blijft op alle clients en in synchronisatie met het gedrag van het drijfveld.
    • Golfsnelheid is de naam van een blootgestelde float-type shader-eigenschap die de basissnelheid bepaalt waarmee de golven horizontaal worden doorgegeven. De eigenschapswaarde zelf moet worden ingesteld in het materiaal dat wordt toegepast op de golfoppervlakgaas. Als u dit instelt op nul, wordt het golfoppervlak statisch en wordt het niet meer te verplaatsen.
    • Wave Length is de naam van een blootgestelde floatshader-eigenschap die de grofheid van het golfpatroon bepaalt. De eigenschapswaarde zelf moet worden ingesteld in het materiaal dat wordt toegepast op de golfoppervlakgaas. Kleinere waarden produceren korte rimpels; grotere waarden produceren lange, vegende golven.
    • Golfhoogte is de naam van een weergegeven float-type shader-eigenschap die de basishoogte van de golven bepaalt. De eigenschapswaarde zelf moet worden ingesteld in het materiaal dat wordt toegepast op de golfoppervlakgaas. Als u dit instelt op nul, wordt het golfoppervlak volledig plat.

De meegeleverde voorbeeld-shadergrafiek BasicWavyWaterSurface (gebruikt door het materiaal met dezelfde naam) gebruikt de vereiste BuoyancyFieldWaves_VertexPosition hoekpuntsub-shader om het golvende 3D-oppervlak te produceren, maar bevat alleen een minimale stand-in-implementatie voor de fragment-shader, waardoor het oppervlak wordt weergegeven als een ongeschaduwde, ongeschaduwde, semi-transparante mesh.

Schermopname van de arceringsgrafiek Basic Wavy Water Surface in de Shader Graph Editor.

U kunt het fragmentpad van een arcering die met het BuoyancyFieldWaves onderdeel wordt gebruikt, naar wens aanpassen. Het is echter essentieel dat het hoekpuntpad van uw shader gebruikmaakt van de BuoyancyFieldWaves_VertexPosition sub-shadergrafiek en dat de vier invoerwaarden voor deze sub-shadergrafiek worden weergegeven als float-type shader-eigenschappen van de algehele arceringsgrafiek, zodat het onderdeel deze tijdens runtime kan openen. Als uw shader de vereiste sub-shadergrafiek niet kan opnemen of als een van de vereiste shader-eigenschappen niet wordt weergegeven, wordt er tijdens de ontwerptijd een foutbericht weergegeven met de controle van het onderdeel en werkt de drijfkracht niet tijdens runtime:

Schermopname van de scriptopties voor Buoyancy Field Waves met het foutbericht: Vereiste hoekpuntsub-shader niet in gebruik.

Schermopname van de scriptopties voor Buoyancy Field Waves met het foutbericht: Shader-eigenschap wordt niet weergegeven door materiaal.

De voorbeeld-shadergrafiek BasicWavyWaterSurface kan fungeren als een stand-in tijdens het ontwikkelen van inhoud en als uitgangspunt voor uw eigen shader-ontwikkelingen. U kunt ook een bestaande wateroppervlakschaduw nemen, het fragmentpad behouden en alleen het hoekpuntpad vervangen.

Maximale snelheid van Angular

Overschrijft de standaard maximale hoeksnelheid van een fysicalichaam.

Schermafbeelding van de scriptopties voor Max Angular Velocity in Inspector.

De fysica-motor staat niet toe dat de stijve iemand deze hoeksnelheid overschrijdt. Dit kan handig zijn om de rollende snelheid van een bepaalde rigide te beperken of om het sneller te laten rollen dan de fysicastandaard, wat 50 radialen per seconde is (ongeveer 8 revoluties per seconde).

De maximale hoeksnelheid moet worden ingevoerd in radialen per seconde. De ingevoerde waarde wordt ook weergegeven in graden per seconde (180 graden ≈ 3,14 radialen) en revoluties per seconde (1 revolutie = 360 graden ≈ 6,28 radialen).

Veld Snelheidsgrootte

Hiermee staat u versnelling/vertraging van een stijvebody toe totdat deze een snelheid bereikt die binnen een toegestaan bereik ligt.

Schermafbeelding van de scriptopties voor het veld Velocity in de Inspector.

Dit onderdeel bepaalt de grootte van de snelheid en houdt de huidige richting. Als het object nog steeds is, kiest het een willekeurige richting voor de duur van één frame. Er zijn twee bewerkingsmodi:

  • Als hij aan een rigide wordt bevestigd, zal deze stijfheid gecontroleerd worden.
  • Als deze is gekoppeld aan een triggerbotser, worden alle stijve lichamen die dit triggervolume binnenkomen, beïnvloed.

Instellingen:

  • Het type snelheid bepaalt of we aan lineaire of hoekvormige snelheid werken.
  • Snelheidslimieten stellen de gewenste limieten voor minimum- en maximumsnelheid in meters/seconde (of radialen/seconde in geval van hoeksnelheid). Als de huidige snelheid lager is dan het minimum zal het versnellen, als het meer dan het maximum is, zal het lichaam vertragen. Als de huidige snelheid al binnen de limieten valt, heeft het script geen effect. Als u een specifieke doelsnelheid wilt instellen, stelt u het minimum en maximum in op dezelfde waarde.
  • Max Acceleration definieert de maximumversnelling die wordt toegepast om de doelsnelheid te bereiken.
  • Het type versnelling definieert een type versnelling om een doelsnelheid te bereiken.
    • Onmiddellijk bereikt u de snelheidslimiet (gelijk aan constante versnelling met Max Acceleration = Oneindigheid).
    • Constante versnelling zorgt ervoor dat de body de doelsnelheid bereikt, ongeacht wat binnen de grenzen van de instelling Max Acceleration valt.
    • Smooth Approach vermindert de versnelling zo dichter bij de doelsnelheid. Dit betekent dat u in de praktijk nooit de doelsnelheid zult bereiken. Als er ook externe invloed is, zoals omhoog of omlaag gaan, wordt deze extra invloed niet volledig overschreven, wat resulteert in een snellere afdaling dan bergopwaarts.
  • Betrokken lichamen definiëren optionele filtervoorwaarden voor de lichamen die door dit onderdeel worden beïnvloed. (Standaard worden alle lichamen beïnvloed.)

Veld uitlijnen

Hiermee wordt de hoofdtekst uitgelijnd op de opgegeven as.

Schermafbeelding van de scriptopties veld uitlijnen in Inspector.

Dit onderdeel voegt koppel toe aan het lichaam om het uit te lijnen op een specifieke richting. Houd er rekening mee dat koppel altijd wordt toegepast in de richting die het lichaam naar het doel draait. Er zijn twee bewerkingsmodi:

  • Als hij aan een rigide wordt bevestigd, wordt deze stijfheid uitgelijnd.
  • Indien bevestigd aan een triggerbotser, worden alle stijve lichamen die dit triggervolume binnenkomen uitgelijnd.

Instellingen:

  • Rigidbody-as stelt de as van de getroffen starrebody in die moet worden uitgelijnd op het doel.
  • De uitlijningsmodus biedt verschillende modi voor het opgeven van doeluitlijning:
    • In Globale ruimte om doeluitlijning in globale ruimte op te geven.
    • In lokale ruimte om de doeluitlijning in de lokale ruimte op te geven (alleen zinvol met triggervolume).
    • Direction Of Velocity om het lichaam uit te lijnen op de lineaire snelheid.
    • Richting Game Object om het lichaam uit te lijnen op een doel gameobject.
  • Doeluitlijning stelt de doelrichting van de uitlijning in. (Alleen wanneer De uitlijningsmodus is ingesteld op In globale ruimte of in lokale ruimte.)
  • Doelspelobject stelt de doelrichting van de uitlijning in. (Alleen wanneer De uitlijningsmodus is ingesteld op Naar game-object.)
  • Koppel vermenigvuldiger schaalt het toegepaste koppel om de doeluitlijning te bereiken; een hogere vermenigvuldiger draait het lichaam sneller (tussen 1 en 1000).
  • De dempingscoëfficiënt stelt de dempingsfactor in (tussen 0 en 5). Als de instelling lager is dan 1, kan het lichaam rond de doelstand osctueren.
  • Betrokken lichamen definiëren optionele filtervoorwaarden voor de lichamen die door dit onderdeel worden beïnvloed. (Standaard worden alle lichamen beïnvloed.)

Veld Snelheidsrichting

Hiermee kunt u een stijf iemand sturen totdat de snelheid een doelrichting bereikt.

Schermafbeelding van de scriptopties voor veld voor snelheidsrichting in de Inspector.

Dit onderdeel bepaalt alleen de richting van de snelheid en houdt de huidige snelheid. Er zijn twee bewerkingsmodi:

  • Als hij aan een rigide wordt bevestigd, zal deze stijfheid gecontroleerd worden.
  • Als deze is gekoppeld aan een triggerbotser, worden alle stijve lichamen die dit triggervolume binnenkomen, beïnvloed.

Instellingen:

  • Het type snelheid bepaalt of we aan lineaire of hoekvormige snelheid werken.
  • Volg Game-object definieert of het doel een vooraf gedefinieerde richting of richting naar een specifiek GameObject is. Werkt alleen voor lineaire snelheid.
  • Doeltekst (als Gameobject volgen is ingesteld op true): stelt de gewenste volgrichting in.
  • Doelrichting stelt de gewenste richting in. Deze waarde wordt genormaliseerd, dus de grootte heeft geen effect.
  • Direction In Local Space bepaalt of de richting wordt opgegeven in een lokale transformatie van de explosie.
  • Max Acceleration definieert de maximumversnelling die wordt toegepast om de doelsnelheid te bereiken.
  • Het type versnelling definieert een type versnelling om een doelsnelheid te bereiken.
    • Onmiddellijk bereikt u de doelrichting (gelijk aan constante versnelling met maxversnelling = oneindigheid).
    • Constante versnelling zorgt ervoor dat de body de doelsnelheid bereikt, ongeacht wat binnen de grenzen van de instelling Max Acceleration valt.
    • Smooth Approach vermindert de versnelling zo dichter bij de doelsnelheid. Dit betekent dat u in de praktijk nooit de doelsnelheid bereikt. Als er ook externe invloed is, zoals omhoog of omlaag gaan, wordt deze extra invloed niet volledig overschreven, wat resulteert in een snellere afdaling dan bergopwaarts.
  • Betrokken lichamen definiëren optionele filtervoorwaarden voor de lichamen die door dit onderdeel worden beïnvloed. (Standaard worden alle lichamen beïnvloed.)

Magnetische hoofdtekst

Geeft het lichaam een magnetische eigenschap die andere lichamen aantrekt of afstoot.

Schermafbeelding van de scriptopties magnetische hoofdtekst in de Inspector.

Dit onderdeel werkt alleen als deze is gekoppeld aan een of meer colliders. (Deze colliders kunnen ook worden genest in de transformatiehiërarchie onder het GameObject element waaraan dit onderdeel is gekoppeld.) Elke collider vertoont een kracht op andere rigideboden die dicht genoeg zijn bij deze collider.

Instellingen:

  • Sterkte definieert de versnelling van de magneet op het contactpunt (wanneer de afstand tussen colliders nul is).
  • Afstand van invloed bepaalt het bereik van de magnetische kracht. Magnetische kracht wordt alleen toegepast als de kortste afstand tussen bots kleiner is.
  • Veldtype bepaalt hoe de magnetische kracht verzwakt met de afstand.
    • Constant gaat ervan uit dat de magnetische kracht gelijk is aan de afstand.
    • Lineair gaat ervan uit dat de magnetische kracht lineair van sterkte naar nul daalt (op de afstand van invloed).
    • Inverse gaat uit van een omgekeerd evenredige afhankelijkheid van de afstand.
    • Inverse Squared gaat uit van een inverse proportionele afhankelijkheid van de afstand kwadratische afstand (vergelijkbaar met een echte magneet).
  • Magnetische pool bepaalt welke objecten worden aangetrokken of afgestoten door dit object.
    • De Noordpool trekt de Zuidpool aan en verjaagt de Noordpool.
    • De Zuidpool trekt noordpool aan en verjaagt de Zuidpool.
    • Magnetisch trekt zowel de Zuidpool als de Noordpool aan.
  • Gravity On Contact uitschakelen: Als dit ingeschakeld is en sterkte van de magneet twee keer groter is dan de zwaartekracht, wordt de zwaartekracht uitgeschakeld voor lichamen die in contact zijn met deze magneet. Een van de objecten moet statisch zijn om dit te beïnvloeden. Dit wordt vaak gebruikt om het glijden van lichamen langs een muur te voorkomen.

Bolvormige explosie

Hiermee ontstaat een explosie waardoor alle lichamen binnen een specifieke straal naar buiten bewegen.

Schermopname van de scriptopties Spherical Explosion in de Inspector.

De explosiekracht hangt af van de massa van een stijf iemand (en mogelijk de afstand van het explosiecentrum).

Instellingen:

  • Sterkte definieert het effect van de explosie op lichamen in meters/seconde. De werkelijke snelheidswijziging is minder afhankelijk van het explosietype en de kritieke massa (zie hieronder).
  • Afstand van invloed bepaalt het bereik van de explosiekracht.
  • Veldtype bepaalt hoe het explosie-effect afzwakt met afstand.
    • Constant gaat ervan uit dat het effect onafhankelijk is van de afstand.
    • Lineaire daling gaat ervan uit dat het effect van maximum tot nul daalt (op de afstand van invloed).
  • Kritieke massa definieert de massa van het lichaam die niet wordt beïnvloed door de explosie. Zwaardere lichamen voelen minder effect dan lichtere lichamen. Een rigide die bijvoorbeeld een derde van de Kritieke Massa weegt, zal twee derde van de Velocity Change voelen.
  • Angular Impulse Scale definieert waar de kracht wordt toegepast. Als de waarde is ingesteld op 0, wordt de kracht toegepast in het midden van de massa, wat betekent dat er geen draaiing is. Als dit is ingesteld op 1, wordt de kracht toegepast op het dichtstbijzijnde punt van de explosie.
  • Occlusie Indien ingeschakeld, voelen objecten die zich verborgen achter andere objecten niet de explosie voelen. Slechts één straal tussen het midden van de explosie en het midden van de massa wordt gecontroleerd op occlusie.

Directionele explosie

Hiermee ontstaat een explosie waardoor alle lichamen binnen een trigger in een bepaalde richting bewegen.

Schermafbeelding van de opties voor directionele eplosionscripts in Inspector.

De explosiekracht hangt af van de massa van een stijf iemand. Dit onderdeel werkt alleen als deze is gekoppeld aan een triggerbotser. Alle lichamen binnen de trigger-collider worden beïnvloed.

Instellingen:

  • Sterkte definieert het effect van de explosie op lichamen in meters/seconde. De werkelijke snelheidswijziging is minder afhankelijk van de kritieke massa (zie hieronder).
  • De richting bepaalt de richting van de explosie. Deze waarde wordt genormaliseerd, dus de grootte heeft geen effect.
  • Direction In Local Space bepaalt of de richting wordt opgegeven in een lokale transformatie van de explosie.
  • Kritieke massa definieert de massa van het lichaam die niet wordt beïnvloed door de explosie. Zwaardere lichamen voelen minder effect dan lichtere lichamen. Een rigide die bijvoorbeeld een derde van de Kritieke Massa weegt, zal twee derde van de Velocity Change voelen.
  • Angular Impulse Scale definieert waar de kracht wordt toegepast. Als de waarde is ingesteld op 0, wordt de kracht toegepast in het midden van de massa, wat betekent dat er geen draaiing is. Als dit is ingesteld op 1, wordt de kracht toegepast op het dichtstbijzijnde punt van de explosie.
  • Betrokken lichamen definiëren optionele filtervoorwaarden voor de lichamen die door dit onderdeel worden beïnvloed. (Standaard worden alle lichamen beïnvloed.)

Gezamenlijke stabilisatie

Stabiliseert het beperkingssysteem door de stijve tensor van de stijve iemand aan te passen.

Schermopname van de opties voor gezamenlijke stabilisatiescripts in de Inspector.

Het script werkt op alle kinderen met de Rigidbody of Joint component gekoppeld.

Instellingen:

  • Stabilisatiefactor bepaalt hoeveel u fysieke juistheid opoffert voor stabiliteit. Bijvoorbeeld: 1 -> voornamelijk fysica correct, 4 -> compromis, 10 -> stabiel met artefacten.
  • Gezamenlijke projectie maakt beperkingsprojectie mogelijk voor alle onderliggende elementen. Dit kan de stabiliteit aanzienlijk verbeteren, maar fysieke juistheid opofferen. Het werkt alleen op configureerbare en tekengewrichten.
  • Projectieafstand definieert de maximaal toegestane schending van beperkingen. Probeer deze waarde zo hoog mogelijk in te stellen om fysicaproblemen te voorkomen.

Bouncing Surface

Hiermee maakt u een stuiterend oppervlak dat ervoor zorgt dat alle botsende objecten met een vooraf gedefinieerde snelheid afspringen.

Schermafbeelding van de opties voor het bouncing Surface-script in Inspector.

Instellingen:

  • Bounce Velocity Magnitude definieert de minimum- en maximumsnelheidsgrootte van het object na het stuiteren. Zie Bounce-effect voor de wijze waarop de richting wordt bepaald. Stel Min en Max in op gelijke waarde als u één doelsnelheid wilt opgeven.
  • Bounce Effect definieert het beoogde gedrag van bouncing-objecten.
    • Perfect Bounce: de hoek van binnenkomende snelheid voor het botsingsvlak is hetzelfde als de hoek van uitgaande snelheid.
    • Snelheidsgrootte instellen: de hoek van de uitgaande snelheid op normaal wordt beïnvloed door wrijving.
    • Stel de normale snelheid in: vergelijkbaar met snelheidsgrootte instellen, maar de bounce velocity magnitude definieert de grootte van de snelheid loodrecht op het vlak (normale snelheid).
    • Stuiteren naar doeltekst: de richting van de uitgaande snelheid wordt gericht op een doeltekst. Als deze optie is geselecteerd, wordt de eigenschap Doeltekst weergegeven en moet deze worden ingesteld.
  • Wrijving bepaalt hoeveel tangenssnelheid verloren gaat bij botsing. Als dit is ingesteld op 0, behoudt het bouncing-object tangensiële snelheid. Als dit is ingesteld op 1, stuitert het object loodrecht op het oppervlak (tangensiële snelheid is 0). Voor waarden van meer dan 1 stuitert het object achteruit.

Midden van massaverschil

Verschoven het midden van massa van een stijf iemand.

Schermafbeelding van de scriptopties center of mass offset in Inspector.

Instellingen:

  • Verschuiving in lokale coördinaten definieert de verschuiving in lokale coördinaten.

Bereik van lokale fysica

Alle rigide elementen in de hiërarchie onder dit onderdeel worden niet gesynchroniseerd tussen clients. Dit script moet worden toegevoegd aan rigidbodies waarvan de posities of rotaties worden ingesteld via een visueel script of een animatie.

Schermopname van de instellingen voor lokaal fysicabereik in de Inspector.

Meer informatie over knooppunten van mesh-visualscripts voor fysica.

Weggooien

Berekent de starre positie van de toekomstige ruimte in vrije ruimte onder het effect van de zwaartekracht.

Schermafbeelding van de scriptopties Voor het gooien van trajecten in de Inspector.

Instellingen:

  • Rigidbody Mode: Wanneer ingesteld op waar, worden de starre positie en snelheid genomen als initiële omstandigheden. Maakt berekening van toekomstige posities in realtime mogelijk.
  • Rigidbody (alleen van toepassing wanneer Rigidbody Mode is ingesteld op true.): Definieert welke rigide iemand wordt genomen.
  • Initiële snelheid: (alleen van toepassing wanneer de Rigidbody-modus is ingesteld op onwaar): Definieert de initiële snelheid. De eerste positie wordt genomen van de positie van het GameObject waaraan dit onderdeel is gekoppeld.
  • Maximum aantal punten: definieert het maximum aantal berekende punten.
  • Tijdstap: Definieert het tijdsverschil tussen de toekomstige posities.
  • Zwaartekracht: Dit is de zwaartekrachtversnelling.
  • Lijnweergave: Hiermee geeft u de lijnweergave de positie van punten worden gekopieerd naar. Dit geeft het gooitraject weer.

Hoofdteksttransformaties opnieuw instellen

Wanneer dit onderdeel wordt geactiveerd door een visueel script, wordt de positie en rotatie van alle fysicateksten op dezelfde transformatie of eventuele onderliggende transformaties opnieuw ingesteld op de oorspronkelijke waarden.

Schermopname van het onderdeel Reset Body Transforms in de Inspector.

Instellingen:

  • Eerste automatische opslag: als deze optie is geselecteerd, gebruikt u de transformaties bij het opstarten van de omgeving als de transformaties voor opnieuw instellen. Als deze optie niet is geselecteerd, moet u een visueel script gebruiken om de functie Body Transforms Now opslaan aan te roepen om resettransformaties op te slaan voordat u een reset uitvoert.

Functies die beschikbaar zijn voor visuele scripts

  • Reset Body Transforms Now: Reset the position and rotation of all physics bodies in scope of this Reset Body Transforms component to their most recent saved reset transforms . Roep dit slechts aan op één client.

Schermafbeelding van het onderdeel Opnieuw instellen van hoofdteksttransformaties in de bewerkingsmodus, waarbij de knop Hoofdteksttransformaties nu alleen in de afspeelmodus is gemarkeerd.

Schermopname van het onderdeel Reset Body Transforms in de afspeelmodus met de knop Nu opnieuw instellen van hoofdtekst gemarkeerd.

  • Sla bodytransformaties nu op de huidige positie en rotatie van alle fysicateksten in het bereik van dit onderdeel Reset Body Transforms op als hun resettransformaties. Roep dit slechts aan op één client.

Volgende stappen