Lezen in het Engels

Delen via


Programmeerhandleiding voor meshfysica

Algemene tips

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

Mesh Physics heeft een aantal extra uitdagingen. Hier volgen enkele tips om ze te overwinnen.

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

  • Gebruik waar mogelijk dikke convexe stukken voor statische geometrie. Vermijd meshes, 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 afspelen van animaties toevoegen aan de scène die communiceren 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 zich op hetzelfde moment in dezelfde animatiestatus bevinden.

Instellingen

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

Schermafbeelding van de instellingen van het animatieonderdeel in de Inspector.

De animatieclip die wordt gebruikt door de animatie voor automatisch afspelen, kan elke terugloopmodus gebruiken. Handige keuzes zijn "Loop" en "Ping Pong".

Schermafbeelding van de assetinstellingen animatieclip in de Inspector.

Onderdelen

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

Plakkerig lichaam

Zorgt ervoor dat lichamen aan andere lichamen blijven plakken. Het kan worden gebruikt om pijlen naar andere lichamen te gooien of om een afbeelding op een muur te bevestigen. Dit wordt uitgevoerd door een vaste beperking tussen de twee betrokken instanties te creëren. Notitie: Deze bewerking wordt uitgevoerd op alle clients en wordt daarom geïmplementeerd als een speciaal netwerkbericht.

Schermafbeelding van de plaktekstscriptopties in inspector.

Instellingen

  • Stok: Hiermee bepaalt u of de hoofdtekst blijft hangen aan dynamische of/en statische lichamen.
  • Wanneer: Soms wilt u een snel lichaam plakken wanneer het een ander lichaam raakt, en soms wilt u een lichaam plakken wanneer het een bepaalde tijd tegen een ander lichaam wordt gehouden, zoals wachten tot lijm is verhard wanneer u een knop op een muur lijmt.
  • Botsingscontrole 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 in code vastgelegde botsingslagen in Microsoft Mesh zijn, is dit mogelijk geen optie. Hier kunt u specifieke hoofdteksten uitschakelen.
  • Getroffen lichamen voor botsingen Hoofdfilter toegepast op Collision Control.

Insluitingsveld

Zorgt ervoor dat stijve lichamen binnen de grenzen van een of meer trigger colliers blijven.

Schermafbeelding van de scriptopties voor het insluitingsveld in de Inspector.

Dit onderdeel werkt alleen als het is gekoppeld aan een of meer trigger-colliers. (Deze trigger colliders kunnen ook worden genest in de transformatiehiërarchie onder de GameObject 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 begint. Het massacentrum van elk van deze stijve lichamen wordt dan beperkt om binnen de grenzen van het triggervolume te blijven – het zal niet mogelijk zijn om de massacentra van deze stijve lichamen ergens buiten te trekken of anderszins te verplaatsen.

Instellingen:

  • Met Max Deviation From Containment kan het massacentrum van een aangetaste stijve body iets buiten de triggervolumes gaan voordat deze weer wordt uitgelijnd. Dit is een afweging tussen prestatiesoptimalisatie: als de toegestane maximale deviatie groot is, kan de hoofdtekst het triggervolume zichtbaar verlaten en teruglijnen, maar de code kan voorkomen dat de positie van de hoofdtekst heel vaak moet worden gecontroleerd en gecontroleerd wanneer deze rust of langzaam beweegt binnen het triggervolume.

  • Beïnvloede lichamen definieert optionele filtervoorwaarden voor de lichamen die door dit onderdeel worden beïnvloed. (Standaard worden alle lichamen beïnvloed.)

Snelheidsvectorveld

Hiermee kan een stijve persoon worden versneld/vertraagd totdat deze een specifieke doelsnelheid heeft bereikt.

Schermafbeelding van de scriptopties voor directionele snelheidsvelden in inspector.

Dit onderdeel bepaalt zowel de magnitude als de snelheidsrichting. Zie Snelheidsgrootheidsveld om alleen de magnitude te bepalen en Het veld Snelheidsrichting om alleen de richting te bepalen. Er zijn twee bewerkingsmodi:

  • Als het vastzit aan een stijve body, wordt deze starre body gecontroleerd.
  • Indien bevestigd aan een trigger collider, zullen alle stijve lichamen die dit triggervolume binnenkomen, worden beïnvloed.

Instellingen:

  • Snelheidstype definieert of we werken aan lineaire of hoeksnelheid.
  • De richting in lokale ruimte bepaalt of de doelsnelheid wordt 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 hoeksnelheid).
  • Max Acceleration definieert de maximale versnelling die wordt toegepast om de doelsnelheid te bereiken.
  • Type versnelling definieert een type versnelling om een doelsnelheid te bereiken.
    • Instantaneous bereikt de doelsnelheid onmiddellijk (hetzelfde als constante versnelling met max acceleratie = oneindig).
    • Constante versnelling zorgt ervoor dat het lichaam de doelsnelheid bereikt, ongeacht wat binnen de limieten van de instelling Maximale versnelling valt.
    • Smooth Approach vermindert de versnelling hoe dichter u bij de doelsnelheid komt. Dit betekent dat u in de praktijk nooit de doelsnelheid zult bereiken. Mocht er ook een externe invloed zijn, zoals bergop of bergafwaarts gaan, dan wordt deze extra invloed niet volledig overschreven, wat resulteert in een snellere afdaling dan bergopwaarts.
  • Beïnvloede lichamen definieert optionele filtervoorwaarden voor de lichamen die door dit onderdeel worden beïnvloed. (Standaard worden alle lichamen beïnvloed.)

Geschaald zwaartekrachtveld

Verandert hoe zwaartekracht stijve lichamen beïnvloedt binnen de grenzen van een of meer trigger colliers.

Schermafbeelding van de scriptopties Voor antizwaartekrachtvelden in inspector.

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

Stijve lichamen die de trigger colliders raken of overlappen (het 'triggervolume') gedragen zich volgens de zwaartekrachtinstellingen van dit onderdeel in plaats van de globale fysica-zwaartekracht. Stijve lichamen waarvoor Use Gravity is uitgeschakeld, worden genegeerd.

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

  • Als de zwaartekracht minder is dan wat we gewend zijn (objecten zijn langzamer als 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 als kleiner – zoals een muis.

Instellingen:

  • Gravity Preset maakt het mogelijk om verschillende interessante en nuttige voorinstellingen te selecteren voor de eigenschap Gravity Scale : verschillende hemellichamen (Maan, Mars, Aarde, Jupiter), geen zwaartekracht (ruimte) of omgekeerde zwaartekracht (Ondersteboven). U kunt de Zwaartekrachtschaal altijd overschrijven met elke gewenste waarde.
  • Gravity Scale stelt de lokale zwaartekracht in het triggervolume in ten opzichte van de standaard fysica-zwaartekracht die van invloed is op de scène. De standaard zwaartekrachtschaal van 1 laat de zwaartekracht onverlet; grotere waarden verhogen de zwaartekracht; 0 verwijdert zwaartekracht; negatieve waarden veranderen de richting van de zwaartekracht.
  • Beïnvloede lichamen definieert optionele filtervoorwaarden voor de lichamen die door dit onderdeel worden beïnvloed. (Standaard worden alle lichamen beïnvloed.)

Orbitaal zwaartekrachtveld

Simuleert de zwaartekracht van een 'speelgoedplaneet' in uw scène.

Schermafbeelding van de scriptopties voor Gravity Field in inspector.

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

Stijve lichamen die de trigger colliders raken of overlappen (het 'triggervolume') worden naar de positie van het object getrokken waaraan dit onderdeel is gekoppeld.

Instellingen:

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

  • Met Global Gravity uitschakelen wordt de globale fysicazwaarteinstelling van de scène uitgeschakeld voor lichamen die door dit onderdeel worden beïnvloed. Standaard heeft de zwaartekracht van de globale scène nog steeds invloed op uw planeet en zijn manen.

  • Beïnvloede lichamen definieert optionele filtervoorwaarden voor de lichamen die manen kunnen worden in dit zwaartekrachtveld.

  • Force Moons On Circular Orbit is een cheat die zachte krachten toepast om de maan in een cirkelvormige baan te duwen. De motivatie is dat het moeilijk is voor een niet-expert om de zwaartekracht en de beginsnelheid van de lichamen in te stellen op een manier om een cirkelvormige baan te bereiken. Als deze optie is ingeschakeld, beginnen manen die in het zwaartekrachtveld in Editor Unity worden geplaatst, bovendien automatisch 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 in een cirkelbaan te dwingen.

  • Set Forced Radius Where Placed maakt manen die in het zwaartekrachtveld in Unity worden geplaatst Editor automatisch hun initiële afstand tot het centrale lichaam als voorkeursbaan aannemen.

  • Set Forced Radius Where Dropped maakt manen die interactief worden vastgepakt en verplaatst naar het zwaartekrachtveld automatisch de afstand van het centrale lichaam waarop ze zijn neergevallen als hun favoriete baan.

  • Default Force Radius definieert de standaardradius voor de bovenstaande cheat die wordt gebruikt, tenzij deze wordt overschreven door een van de andere opties.

Drijfvermogensveld

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

Schermafbeelding van de scriptopties voor het drijfveld in inspector.

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

Stijve lichamen die de trigger colliders (het 'triggervolume') raken of overlappen, ervaren drijfkrachten (upthrust) om ze drijvend te houden.

Dit onderdeel gebruikt de vorm van de stijve colliers om de dichtheid (met andere woorden, volume gedeeld door massa), drijfvermogen, weerstand en wrijving te berekenen.

Drijfvermogen Colliders

Voordeel: Prestaties. De rekenkosten van de drijfvermogensberekeningen worden lineair geschaald met het aantal hoekpunten van de collier. Typische fysica colliers voor lichamen, zelfs als ze al vereenvoudigd zijn, zijn vaak aanzienlijk complexer (in termen van het aantal hoekpunten) dan vereist is om het drijfvermogen goed genoeg te laten werken.

Gebruikswijze: Voeg een (of meerdere) extra colliers toe aan een hoofdlichaam (deze kunnen worden uitgeschakeld). Markeer de colliers als expliciete drijfwand door een fysicamateriaal met de naam BuoyancyHull (exacte spelling is van belang!) toe te wijzen. De configuratiedetails van dit fysicamateriaal doen er niet toe - er wordt een geschikt fysicamateriaal geleverd met het Mesh-toolkitpakket. Als een lichaam zo gemarkeerde colliers heeft, worden alleen deze colliers gebruikt voor drijfvermogensberekeningen; alle andere mijnen worden genegeerd.

Best practices: Expliciete drijfkrachtige rompen colliers voor een rigide die mogelijk in een BuoyancyField kan worden gegooid. Het is het beste (en het eenvoudigst) om Kubus colliers te gebruiken, omdat ze de minste hoekpunten hebben (acht per collier). De exacte visuele vorm van het drijflichaam is meestal niet vereist voor een goed resultaat; een zeer grove benadering is meestal voldoende.

Instellingen:

  • Dichtheid is de dichtheid van de gesimuleerde vloeistof die het triggervolume 'vult' in kilogram per kubieke meter. (De standaardwaarde geeft de geschatte dichtheid van water bij kamertemperatuur aan.)
  • Surface Type geeft aan hoe het onderdeel de vorm van het wateroppervlak bemonstert om drijfkracht te berekenen.
    • Static Flat gaat ervan uit dat het wateroppervlak perfect vlak is en nooit van zijn beginpositie in de scène komt. De positie en oriëntatie van het wateroppervlak wordt slechts één keer bepaald, wanneer de scène begint. Dit is de goedkoopste optie voor berekeningen.
    • Dynamic Flat gaat ervan uit dat het wateroppervlak perfect planair is, maar wel kan bewegen (het waterpeil kan bijvoorbeeld stijgen of zinken). De positie en oriëntatie van het wateroppervlak wordt eenmaal per frame bepaald.
    • Dynamic Flat Per Body ondersteunt een wateroppervlak dat niet vlak is (het kan bijvoorbeeld golvend zijn). Voor elke stijve constructie die op het wateroppervlak drijft, wordt één keer per frame een lokale planaire benadering van het wateroppervlak onder de stijve constructie bepaald, die vervolgens wordt gebruikt om drijfkracht voor dit stijve exemplaar te berekenen.
  • Affected Bodies definieert optionele filtervoorwaarden voor de lichamen die in dit drijfvermogensveld kunnen zweven. (Standaard komen alle lichamen in aanmerking.)
  • Sleep bepaalt de bewegingsweerstand wanneer het stijve lichaam het water raakt (met andere woorden, wrijving orthogonaal aan het lichaamsoppervlak).
  • Huidwrijving regelt de bewegingsweerstand als het stijve lichaam door het water wordt verplaatst (met andere woorden, wrijving parallel aan het lichaamsoppervlak).

Belangrijk! Als u wilt dat het onderdeel toegang heeft tot de driehoeken van een starre collider, moet het selectievakje 'Lezen/schrijven ingeschakeld' worden ingeschakeld in de importinstellingen van het collider-mesh. Anders wordt het lichaam genegeerd door het drijfvermogensveld en valt het door het veld zonder erdoor te worden beïnvloed.

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

  • Als de massa van een stijve body onwaarschijnlijk hoog is in vergelijking met het volume, zal deze naar de bodem zinken.
  • Als de massa van een stijve body onwaarschijnlijk laag is in vergelijking met het volume (bijvoorbeeld de standaardwaarde van Unity Rigidbody van één massa-eenheid), zal deze gewoon op de gesimuleerde vloeistof zitten.

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

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

Drijfveldgolven

Invoegtoepassing voor het BuoyancyField onderdeel dat werkt met een specifieke hoekpunt-arcering ( BuoyancyFieldWaves_VertexPosition beschikbaar als een sub-arceringsgrafiek en een HLSL-include-bestand). Dit creëert het visuele effect van een golvend wateroppervlak samen met het bijbehorende gedrag van objecten die op het wateroppervlak drijven.

Schermafbeelding van de scriptopties voor Buoyancy Field Waves in 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 vlak, gesmeerd gaas waarvan de grenzen van de gewenste vorm van het wateroppervlak zijn wanneer ze van bovenaf worden gezien. Het materiaal dat voor het wateroppervlak wordt gebruikt, moet gebruikmaken van een arcering die de BuoyancyFieldWaves_VertexPosition sub-arcering bevat om de hoekpuntposities van het net te bepalen. U kunt het opgenomen 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 laat zien welk materiaal door de renderer wordt gebruikt. Dit is alleen ter informatie.
    • Arcering laat zien welke arcering wordt gebruikt door het materiaal. Dit is alleen ter informatie.
  • Waves Shader-eigenschapsnamen definieert 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 drijfvermogensveld synchroon blijft met de wateroppervlakvisuals op alle clients.
    • Script controlled time is de naam van een weergegeven float-type shader-eigenschap die voortdurend door dit onderdeel wordt bijgewerkt elk frame met een voortdurend toenemende tijd (gemeten in seconden) die wordt gesynchroniseerd voor alle clients. De BuoyancyFieldWaves_VertexPosition sub-arcering gebruikt deze gedeelde tijd om een golfpatroon te maken dat gesynchroniseerd blijft op alle clients en synchroon blijft met het gedrag van het drijfvermogensveld.
    • Golfsnelheid is de naam van een blootgestelde floatarceringseigenschap van het type die de basissnelheid bepaalt waarmee de golven horizontaal worden doorgegeven. De eigenschapswaarde zelf moet worden ingesteld in het materiaal dat op het golfoppervlak wordt toegepast. Als u dit instelt op nul, wordt het golfoppervlak statisch en niet meer verplaats.
    • Golflengte is de naam van een blootgestelde floatarceringseigenschap van het type die de grofheid van het golfpatroon bepaalt. De eigenschapswaarde zelf moet worden ingesteld in het materiaal dat op het golfoppervlak wordt toegepast. Kleinere waarden produceren korte rimpels; grotere waarden produceren lange, golvende golven.
    • Golfhoogte is de naam van een blootgestelde float-type arceringseigenschap die de basishoogte van de golven bepaalt. De eigenschapswaarde zelf moet worden ingesteld in het materiaal dat op het golfoppervlak wordt toegepast. Als u dit instelt op nul, wordt het golfoppervlak volledig plat.

De meegeleverde voorbeeld-arceringsgrafiek BasicWavyWaterSurface (gebruikt door het materiaal met dezelfde naam) maakt gebruik van de vereiste BuoyancyFieldWaves_VertexPosition hoekpuntsub-arcering om het golvende 3D-oppervlak te produceren, maar bevat alleen een minimale stand-in-implementatie voor de fragment-arcering, waardoor het oppervlak wordt weergegeven als een ongeschaduwd, effen, semi-transparant mesh.

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

U kunt het fragmentpad van een arcering die met het BuoyancyFieldWaves onderdeel wordt gebruikt volledig naar wens aanpassen. Het is echter essentieel dat het hoekpuntpad van uw arcering de BuoyancyFieldWaves_VertexPosition sub-arceringsgrafiek gebruikt en dat de vier invoer in deze sub-arceringsgrafiek wordt weergegeven als float-type arceringseigenschappen van de algehele arceringsgrafiek, zodat het onderdeel deze tijdens runtime kan openen. Als uw arcering de vereiste sub-arceringsgrafiek niet bevat of als een van de vereiste shader-eigenschappen niet wordt weergegeven, wordt in de inspector van het onderdeel een foutbericht weergegeven tijdens het ontwerp en werkt het drijfvermogen niet tijdens runtime:

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

Schermafbeelding van de scriptopties van Buoyancy Field Waves met het foutbericht: Shader-eigenschap niet beschikbaar gemaakt door materiaal.

De voorbeeld-arceringsgrafiek BasicWavyWaterSurface kan dienen als stand-in tijdens het ontwikkelen van inhoud en als uitgangspunt voor uw eigen arceringsontwikkelingen. U kunt ook een bestaande wateroppervlak-arcering gebruiken, het fragmentpad behouden en alleen het hoekpuntpad vervangen.

Maximale snelheid Angular

Overschrijft de standaard maximale hoeksnelheid van een fysicalichaam.

Schermafbeelding van de scriptopties Max Angular Velocity in inspector.

De fysica-engine staat niet toe dat de stijve de hoeksnelheid overschrijdt. Dit kan handig zijn om de rolsnelheid van een bepaalde starre persoon te beperken of om het sneller te laten rollen dan de standaardwaarde voor de natuurkunde, die 50 radialen per seconde is (ongeveer 8 omwentelingen per seconde).

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

Snelheidsgrootheidsveld

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

Schermafbeelding van de scriptopties snelheidsveld in de Inspector.

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

  • Als het vastzit aan een stijve body, wordt deze starre body gecontroleerd.
  • Indien bevestigd aan een trigger collider, zullen alle stijve lichamen die dit triggervolume binnenkomen, worden beïnvloed.

Instellingen:

  • Snelheidstype definieert of we werken aan lineaire of hoeksnelheid.
  • Snelheidslimieten stelt de gewenste limieten van minimum- en maximumsnelheid in meters/seconde (of radialen/seconde in geval van hoeksnelheid). Als de huidige snelheid onder het minimum is, zal het versnellen, als het meer dan het maximum is, zal de body vertragen. Als de huidige snelheid al binnen de limieten ligt, heeft het script geen effect. Als u een specifieke doelsnelheid wilt instellen, stelt u minimum en maximum in op dezelfde waarde.
  • Max Acceleration definieert de maximale versnelling die wordt toegepast om de doelsnelheid te bereiken.
  • Type versnelling definieert een type versnelling om een doelsnelheid te bereiken.
    • Instantaneous bereikt de snelheidslimiet onmiddellijk (hetzelfde als constante versnelling met max acceleratie = oneindig).
    • Constante versnelling zorgt ervoor dat het lichaam de doelsnelheid bereikt, ongeacht wat binnen de limieten van de instelling Maximale versnelling valt.
    • Smooth Approach vermindert de versnelling hoe dichter u bij de doelsnelheid komt. Dit betekent dat u in de praktijk nooit de doelsnelheid zult bereiken. Mocht er ook een externe invloed zijn, zoals bergop of bergafwaarts gaan, dan wordt deze extra invloed niet volledig overschreven, wat resulteert in een snellere afdaling dan bergopwaarts.
  • Beïnvloede lichamen definieert 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 de Inspector.

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

  • Als deze aan een stijve body is bevestigd, wordt deze stijve body uitgelijnd.
  • Indien bevestigd aan een trigger collider, worden alle stijve lichamen die dit triggervolume binnenkomen uitgelijnd.

Instellingen:

  • Rigidbody-as stelt de as in van de betrokken rigidbody die moet worden uitgelijnd op het doel.
  • De uitlijningsmodus biedt verschillende modi om doeluitlijning op te geven:
    • In Globale ruimte om doeluitlijning in globale ruimte op te geven.
    • In Lokale ruimte om doeluitlijning in lokale ruimte op te geven (is alleen zinvol met triggervolume).
    • Richting van snelheid om het lichaam uit te lijnen op de lineaire snelheid.
    • Naar gameobject om de hoofdtekst uit te lijnen op een doel-gameobject.
  • Doeluitlijning stelt de doelrichting van de uitlijning in. (Alleen wanneer de uitlijningsmodus is ingesteld op In algemene ruimte of in lokale ruimte.)
  • Doelspelobject stelt de doelrichting van de uitlijning in. (Alleen wanneer de uitlijningsmodus is ingesteld op Naar gameobject.)
  • Torque Multiplier schaalt het toegepaste koppel om de doeluitlijning te bereiken; een hogere vermenigvuldiger draait het lichaam sneller (tussen 1 en 1000).
  • De dempingscoëfficiënt bepaalt de dempingsfactor (tussen 0 en 5). Wanneer de instelling onder 1 is ingesteld, kan het lichaam rond de richting van het doel oscilleren.
  • Beïnvloede lichamen definieert optionele filtervoorwaarden voor de lichamen die door dit onderdeel worden beïnvloed. (Standaard worden alle lichamen beïnvloed.)

Veld Snelheidsrichting

Maakt het mogelijk om een stijve body te sturen totdat de snelheid een doelrichting bereikt.

Schermafbeelding van de scriptopties voor velocity direction field in inspector.

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

  • Als het vastzit aan een stijve body, wordt deze starre body gecontroleerd.
  • Indien bevestigd aan een trigger collider, zullen alle stijve lichamen die dit triggervolume binnenkomen, worden beïnvloed.

Instellingen:

  • Snelheidstype definieert of we werken aan lineaire of hoeksnelheid.
  • Gameobject volgen definieert of het doel een vooraf gedefinieerde richting is of een richting naar een specifiek GameObject. Werkt alleen voor lineaire snelheid.
  • Doeltekst (als Gameobject volgen is ingesteld op waar): stelt de gewenste volgrichting in.
  • Doelrichting stelt de gewenste richting in. Deze waarde is genormaliseerd, dus magnitude heeft geen effect.
  • Richting in lokale ruimte bepaalt of de richting wordt opgegeven in een lokale transformatie van de explosie.
  • Max Acceleration definieert de maximale versnelling die wordt toegepast om de doelsnelheid te bereiken.
  • Type versnelling definieert een type versnelling om een doelsnelheid te bereiken.
    • Instantaneous bereikt de doelrichting onmiddellijk (hetzelfde als constante versnelling met max acceleratie = oneindig).
    • Constante versnelling zorgt ervoor dat het lichaam de doelsnelheid bereikt, ongeacht wat binnen de limieten van de instelling Maximale versnelling valt.
    • Smooth Approach vermindert de versnelling hoe dichter u bij de doelsnelheid komt. Dit betekent dat u in de praktijk nooit de doelsnelheid zult bereiken. En als er een externe invloed is, zoals bergop of bergafwaarts gaan, wordt deze extra invloed niet volledig overschreven, wat resulteert in een snellere afdaling dan bergafwaarts.
  • Beïnvloede lichamen definieert optionele filtervoorwaarden voor de lichamen die door dit onderdeel worden beïnvloed. (Standaard worden alle lichamen beïnvloed.)

Magnetische body

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

Schermafbeelding van de scriptopties magnetische hoofdtekst in inspector.

Dit onderdeel werkt alleen als het aan een of meer colliers is bevestigd. (Deze colliers kunnen ook worden genest in de transformatiehiërarchie onder de GameObject waaraan dit onderdeel is gekoppeld.) Elke collier vertoont een kracht op andere stijve structuren die dicht genoeg bij deze collier staan.

Instellingen:

  • Sterkte bepaalt de versnelling van de magneet op het contactpunt (wanneer de afstand tussen colliers nul is).
  • Distance Of Influence bepaalt het bereik van de magnetische kracht. Magnetische kracht wordt alleen toegepast als de kortste afstand tussen de colliers kleiner is.
  • Veldtype definieert hoe de magnetische kracht verzwakt met de afstand.
    • Constant gaat ervan uit dat de magnetische kracht dezelfde is, onafhankelijk van de afstand.
    • Lineair gaat ervan uit dat de magnetische kracht lineair daalt van Sterkte naar nul (bij de Afstand van Invloed).
    • Inverse gaat uit van een omgekeerd evenredige afhankelijkheid van de afstand.
    • Inverse Kwadraat gaat uit van een omgekeerd evenredige afhankelijkheid van de afstand in het kwadraat (vergelijkbaar met een echte magneet).
  • Magnetische pool bepaalt welke objecten door dit object worden aangetrokken of afgestoten.
    • De noordpool trekt de zuidpool aan en weert de noordpool af.
    • Zuidpool trekt noordpool aan en stoot de zuidpool af.
    • Magnetisch trekt zowel de zuidpool als de noordpool aan.
  • Zwaartekracht bij contact uitschakelen: Als dit is ingeschakeld en de 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 effect te kunnen hebben. Dit wordt vaak gebruikt om het glijden van lichamen langs een muur te voorkomen.

Bolvormige explosie

Creëert een explosie waardoor alle lichamen binnen een bepaalde straal naar buiten bewegen.

Schermafbeelding van de scriptopties voor Spherical Explosion in inspector.

De explosiekracht is afhankelijk van de massa van een stijve (en mogelijk de afstand tot 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).
  • Distance Of Influence bepaalt het bereik van de explosiekracht.
  • Veldtype definieert hoe het explosie-effect afzwakt met afstand.
    • Constant gaat ervan uit dat het effect onafhankelijk is van de afstand.
    • Linear Drop gaat ervan uit dat het effect daalt van maximum naar nul (op de Afstand van invloed).
  • Kritische massa definieert de massa van het lichaam dat niet wordt beïnvloed door de explosie. Zwaardere lichamen voelen minder effect dan lichtere lichamen. Een stijf iemand die bijvoorbeeld een derde van de kritieke massa weegt, voelt tweederde van de snelheidswijziging.
  • Angular Impulsschaal definieert waar de kracht wordt toegepast. Als deze is ingesteld op 0, wordt kracht toegepast op het midden van de massa, wat betekent dat er geen draaiing is. Indien ingesteld op 1, wordt kracht toegepast op het dichtstbijzijnde punt van de explosie.
  • Occlusie Als dit is ingeschakeld, voelen objecten die achter andere objecten zijn verborgen, de explosie niet. Slechts één straal tussen het midden van de explosie en het massacentrum wordt gecontroleerd op occlusie.

Directionele explosie

Creëert een explosie waardoor alle lichamen binnen een trigger in een bepaalde richting bewegen.

Schermafbeelding van de scriptopties voor Directional Eplosion in Inspector.

De explosiekracht is afhankelijk van de massa van een stijf iemand. Dit onderdeel werkt alleen als het is gekoppeld aan een trigger-collider. Alle lichamen in 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).
  • Richting bepaalt de richting van de explosie. Deze waarde is genormaliseerd, dus magnitude heeft geen effect.
  • Richting in lokale ruimte bepaalt of de richting wordt opgegeven in een lokale transformatie van de explosie.
  • Kritische massa definieert de massa van het lichaam dat niet wordt beïnvloed door de explosie. Zwaardere lichamen voelen minder effect dan lichtere lichamen. Een stijf iemand die bijvoorbeeld een derde van de kritieke massa weegt, voelt tweederde van de snelheidswijziging.
  • Angular Impulsschaal definieert waar de kracht wordt toegepast. Als deze is ingesteld op 0, wordt kracht toegepast op het midden van de massa, wat betekent dat er geen draaiing is. Indien ingesteld op 1, wordt kracht toegepast op het dichtstbijzijnde punt van de explosie.
  • Beïnvloede lichamen definieert 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 inertie tensor van de stijvebody aan te passen.

Schermafbeelding van de scriptopties voor gezamenlijke stabilisatie in inspector.

Het script werkt op alle onderliggende elementen met het onderdeel Rigidbody of Joint gekoppeld.

Instellingen:

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

Stuiterende surface

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

Schermafbeelding van de scriptopties voor stuiterende Surface in de Inspector.

Instellingen:

  • Bounce Velocity Magnitude definieert de grootte van de minimale en maximale snelheid van het object na de bounce. Zie Bounce Effect voor hoe 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 stuiterende objecten.
    • Perfect Stuiteren: de hoek van de binnenkomende snelheid ten opzichte van het botsingsvlak normaal is hetzelfde als de hoek van uitgaande snelheid.
    • Snelheidsgrootheid instellen: de hoek van de uitgaande snelheid naar normaal wordt beïnvloed door wrijving.
    • Normale snelheid instellen: vergelijkbaar met Set Velocity Magnitude, maar de Bounce Velocity Magnitude definieert de magnitude van de snelheid loodrecht op het vlak (normale snelheid).
    • Bounce Towards Target Body: de richting van uitgaande snelheid wordt gericht op een doelbody. Als deze optie is geselecteerd, wordt de eigenschap Doeltekst weergegeven en moet deze worden ingesteld.
  • Wrijving bepaalt hoeveel tangensiële snelheid verloren gaat bij een botsing. Wanneer deze is ingesteld op 0, behoudt het stuiterende object de tangensiële snelheid. Wanneer dit is ingesteld op 1, stuitert het object in de richting loodrecht op het oppervlak (tangensiële snelheid is 0). Voor waarden van meer dan 1 wordt het object achteruit gestuurd.

Midden van massaverplaatsing

Verschoven het midden van de massa van een stijve body.

Schermafbeelding van de scriptopties Center Of Mass Offset in inspector.

Instellingen:

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

Lokaal fysicabereik

Alle rigidbodies 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.

Schermafbeelding van de instellingen voor local physics scope in de Inspector.

Meer informatie over fysica-gebeurtenisknooppunten van Mesh Visual Scripting.

Throw-traject

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

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

Instellingen:

  • Rigidbody-modus: Wanneer ingesteld op true, worden de positie en snelheid van de rigidbody als eerste voorwaarden genomen. Hiermee kunt u in realtime toekomstige positieberekeningen uitvoeren.
  • Rigidbody (is alleen van toepassing wanneer de rigidbody-modus is ingesteld op true.): hiermee wordt gedefinieerd welke rigidbody wordt gebruikt.
  • Initiële snelheid: (alleen van toepassing wanneer rigidbody-modus is ingesteld op onwaar): definieert de beginsnelheid. De eerste positie wordt genomen van de positie van het GameObject waaraan dit onderdeel is gekoppeld.
  • Maximum aantal punten: hiermee definieert u het maximum aantal berekende punten.
  • Tijdstap: definieert het tijdsverschil tussen de toekomstige posities.
  • Zwaartekracht: Dit is de zwaartekrachtversnelling.
  • Line Renderer: hiermee geeft u de lijnweergave aan waar de punten naartoe worden gekopieerd. Hiermee wordt het worptraject weergegeven.

Hoofdteksttransformaties opnieuw instellen

Wanneer deze wordt geactiveerd door een visueel script, stelt dit onderdeel de positie en rotatie van alle fysica-lichamen op dezelfde transformatie of onderliggende transformaties opnieuw in op hun oorspronkelijke waarden.

Schermafbeelding van het onderdeel Reset Body Transforms in inspector.

Instellingen:

  • Initiële automatische opslag: als deze optie is geselecteerd, gebruikt u de transformaties bij het opstarten van de omgeving als de transformaties opnieuw instellen. Als dit niet is geselecteerd, moet u een visueel script gebruiken om de functie Nu hoofdteksttransformaties opslaan aan te roepen om resettransformaties op te slaan voordat u een reset uitvoert.

Functies die beschikbaar zijn voor visuele scripts

  • Hoofdtransformaties nu opnieuw instellen: hiermee stelt u de positie en rotatie van alle fysica-lichamen in het bereik van dit onderdeel Reset Body Transforms in naar de meest recent opgeslagen resettransformaties. Roep deze aan op slechts één client.

Schermafbeelding van het onderdeel Reset Body Transforms in de bewerkingsmodus met de knop Hoofdteksttransformaties nu alleen in afspeelmodus opnieuw instellen gemarkeerd.

Schermafbeelding van het onderdeel Reset Body Transforms in de afspeelmodus met de knop Body Transform Now opnieuw instellen gemarkeerd.

  • Hoofdteksttransformaties nu opslaan Slaat de huidige positie en rotatie op van alle fysica-lichamen binnen het bereik van dit onderdeel Reset Body Transforms terwijl hun resettransformaties worden uitgevoerd. Roep deze aan op slechts één client.

Volgende stappen