Training
Module
In deze cursus krijgt u inzicht in het plaatsen van objecten en het bijhouden van objecten met behulp van oplossers.
Deze browser wordt niet meer ondersteund.
Upgrade naar Microsoft Edge om te profiteren van de nieuwste functies, beveiligingsupdates en technische ondersteuning.
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.
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
De animatieclip die wordt gebruikt door de animatie voor automatisch afspelen, kan elke terugloopmodus gebruiken. Handige keuzes zijn "Loop" en "Ping Pong".
Als u een van de volgende MonoBehaviour
onderdelen aan een object toevoegt, wordt het specifieke gedrag aan dit object toegevoegd.
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.
Instellingen
Zorgt ervoor dat stijve lichamen binnen de grenzen van een of meer trigger colliers blijven.
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.)
Hiermee kan een stijve persoon worden versneld/vertraagd totdat deze een specifieke doelsnelheid heeft bereikt.
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:
Instellingen:
Verandert hoe zwaartekracht stijve lichamen beïnvloedt binnen de grenzen van een of meer trigger colliers.
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:
Instellingen:
Simuleert de zwaartekracht van een 'speelgoedplaneet' in uw scène.
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.
Simuleert drijfvermogen van willekeurige stijve lichamen op water: lichamen lijken te zweven op het aangesloten triggervolume.
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.
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:
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:
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.
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.
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:
MeshRenderer
onderdeel dat de wateroppervlakgaas weergeeft.
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.float
arceringseigenschap 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.float
arceringseigenschap 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.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.
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:
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.
Overschrijft de standaard maximale hoeksnelheid van een fysicalichaam.
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).
Hiermee staat u versnelling/vertraging van een stijve persoon toe totdat deze een snelheid bereikt die binnen een toegestaan bereik ligt.
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:
Instellingen:
Hiermee wordt de hoofdtekst uitgelijnd op de opgegeven as.
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:
Instellingen:
Maakt het mogelijk om een stijve body te sturen totdat de snelheid een doelrichting bereikt.
Dit onderdeel bepaalt alleen de richting van de snelheid en behoudt de huidige snelheid. Er zijn twee bewerkingsmodi:
Instellingen:
Geeft het lichaam een magnetische eigenschap die andere lichamen aantrekt of afstoot.
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:
Creëert een explosie waardoor alle lichamen binnen een bepaalde straal naar buiten bewegen.
De explosiekracht is afhankelijk van de massa van een stijve (en mogelijk de afstand tot het explosiecentrum).
Instellingen:
Creëert een explosie waardoor alle lichamen binnen een trigger in een bepaalde richting bewegen.
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:
Stabiliseert het beperkingssysteem door de inertie tensor van de stijvebody aan te passen.
Het script werkt op alle onderliggende elementen met het onderdeel Rigidbody of Joint gekoppeld.
Instellingen:
Hiermee maakt u een stuiterend oppervlak dat ervoor zorgt dat alle botsende objecten met een vooraf gedefinieerde snelheid worden afgesprongen.
Instellingen:
Verschoven het midden van de massa van een stijve body.
Instellingen:
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.
Meer informatie over fysica-gebeurtenisknooppunten van Mesh Visual Scripting.
Berekent de toekomstige positie van de stijve in de vrije ruimte onder het effect van de zwaartekracht.
Instellingen:
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.
Instellingen:
Functies die beschikbaar zijn voor visuele scripts
Training
Module
In deze cursus krijgt u inzicht in het plaatsen van objecten en het bijhouden van objecten met behulp van oplossers.