Mesh 101 Zelfstudie Hoofdstuk 4: Objecten verplaatsen en animaties activeren met Mesh Interactables en Physics
In dit hoofdstuk gaat u werken met een model van het windpark. U leert hoe u Mesh Interactables en Physics kunt gebruiken om starre lichamen (in dit geval windturbines) te pakken en los te laten en een animatietrigger in te stellen met behulp van Visual Scripting. U sluit de zaken af door de windturbines te beperken, zodat ze alleen binnen een bepaald gebied kunnen worden verplaatst.
Dit hoofdstuk is iets eenvoudiger dan wat u in Hoofdstuk 3 hebt gedaan---er is er geen scripting, en het netwerk is zo ingesteld dat de fysica er hetzelfde uitziet voor alle avatars in de sessie.
Er zijn een aantal dingen die we moeten doen voordat we aan de slag gaan met het eerste station.
De hiërarchie opnieuw configureren
- Vouw in de hiërarchie het Chapter3 GameObject samen en vouw vervolgens het GameObject Chapter4 uit.
De weergave wijzigen om het Chapter 4 Sphere Terrace weer te geven
In de ervaring in Mesh gaat de deelnemer soepel van het einde van hoofdstuk 3 naar het begin van hoofdstuk 4 en bevindt hij zich op de juiste locatie om de hoofdstuk 4-leeractiviteiten te beginnen. Wanneer u de afspeelmodus echter aan het einde van hoofdstuk 3 hebt afgesloten, werd u niet automatisch met het oog op het hoofdstuk 4-model in het venster Scène geplaatst. Laten we die weergave instellen.
Selecteer in de hiërarchie het GameObject met de naam 4.1 - Grab and Release.
Beweeg de cursor over het venster Scène en druk vervolgens op de toets F op het toetsenbord.
Dit centreert de weergave op het 4.1 -- Grab and Release-object , maar u bevindt zich waarschijnlijk niet helemaal in de positie die we nodig hebben.
Sleep, draai en/of zoom in op de weergave totdat u de Hoofdstuk 4-stations voor u ziet, zoals hieronder wordt weergegeven.
Station 4.1: Grab and Release
Het doel voor de deelnemer in dit hoofdstuk van de training is om windturbines van het tafelblad naar de oceaan te verplaatsen. Eenmaal daar, zullen de turbines de oceaanwind vangen, waardoor hun bladen draaien en energie genereren.
Vouw in de hiërarchie de 4.1 -- Grab and Release GameObject uit. Houd er rekening mee dat het drie Windturbine GameObjects bevat die zich op het tafelblad in de scène bevinden.
Laten we 'grab and release'-mogelijkheden toevoegen aan WindTurbine1 , zodat deelnemers deze in Mesh kunnen verplaatsen.
Selecteer windturbine1 in de hiërarchie.
Klik in inspector op de knop Onderdeel toevoegen en zoek vervolgens naar Mesh Interactable Setup en voeg deze toe.
Tip
Een uitleg van dit onderdeel is gegeven in hoofdstuk 3 van deze zelfstudie.
Klik in hetzelfde onderdeel op de vervolgkeuzelijst Objecttype en selecteer vervolgens Manipulable.
Zorg ervoor dat het onderdeel actief is.
Vouw in het onderdeel Rigidbody indien nodig de optie Beperkingen uit en selecteer vervolgens X,Y en Z voor de instellingen voor Rotatie blokkeren.
Dit voorkomt dat de turbine kantelt als je hem op een oneffen oppervlak plaatst.
Uw werk testen
Sla het project op en selecteer vervolgens de knop Afspelen van Unity-editor.
Houd er rekening mee dat wanneer u de afspeelmodus opent, uw beginpunt in het gamevenster het Chapter 3 Sphere Terrace is. Voor dit hoofdstuk willen we in het andere Sphere Terrace zijn---het ene met de Chapter 4-functies. Gelukkig is er een makkelijke manier om daar te komen.
Draai de weergave naar rechts totdat u het informatievak Ga naar hoofdstuk 4 ziet.
Ga naar het informatievak en selecteer vervolgens de knop Teleport naar Hoofdstuk 4 .
Nadat u bij het Chapter 4 Sphere Terrace bent aangekomen, beweegt u de cursor over WindTurbine1- de vorm verandert - en sleept u de turbine vervolgens over de scène.
De turbine blijft rechtop staan als gevolg van het inschakelen van de vriesrotatiebeperkingen .
Klik op de knop Play van De Unity-editor om de afspeelmodus af te sluiten.
U hoeft de andere twee windturbines niet bij te werken. Dat hebben we al voor u gedaan.
Station: 4.2 Animatietrigger
Het idee hier is dat wanneer je een windturbine over de oceaan sleept, de "wind" ervoor zorgt dat de bladen van de turbine draaien. Wat er eigenlijk gebeurt, is dat een transparante kubus met de naam Animatietrigger zich boven de oceaan bevindt en als een triggervolume fungeert. Als u een windturbine naar het triggervolume sleept, wordt de gebeurtenis Bij activeren enter gestart waarmee een draaiende bladeanimatie wordt gestart.
Voor dit hoofdstuk voegen we een script toe aan een GameObject en schakelen we vervolgens animatie in het script in.
Vouw in de hiërarchie het gameobject 4.2 -- Animatietrigger uit en selecteer vervolgens het onderliggende object met de naam Animatietrigger.
Merk op dat u de groene contouren van de Animatie Trigger GameObject's Box Collider kunt zien.
Navigeer in inspector naar het onderdeel Box Collider en selecteer Is trigger.
Tip
Wanneer u Is trigger selecteert, wordt het object het collider-onderdeel gekoppeld aan een triggervolume.
- Navigeer in de hiërarchie naar Hoofdstuk 4>4.1 - Grab and Release en selecteer vervolgens WindTurbine1.
- Klik op de knop Onderdeel toevoegen en zoek naar scriptmachine en voeg deze toe.
We willen dat het script wordt ingesloten, maar dat betekent meestal dat u een volledig nieuwe scriptgrafiek moet maken. We nemen een korte weg; Laat de optie Bron voorlopig ingesteld op Grafiek . We voegen een bestaande scriptgrafiek toe en converteren deze vervolgens naar een ingesloten grafiek.
Klik op de knop in het veld Graph en selecteer in het venster SelectSceneGraph de optie SPWindTurbineScript.
Klik op de knop Converteren . Houd er rekening mee dat hiermee de grafiekinstelling wordt verwijderd en de optie Bron wordt gewijzigd in Insluiten.
De draaiende bladeanimatie toevoegen aan de grafiek
Neem even de tijd om de scriptgrafiek te bekijken. Het heeft twee groepen: de bovenste groep activeert de draaiende animatie van het blad wanneer de gebruiker een windturbine naar het triggervolume sleept en de onderste groep stopt de animatie wanneer de gebruiker de turbine uit het volume sleept.
De grafiek is bijna ingesteld zoals we willen, maar er is nog één probleem. De twee Animator: Set Trigger-knooppunten zijn ingesteld op Deze ...
... maar Dit (met andere woorden , WindTurbine1) heeft niet de animatie die we willen activeren. Laten we het zoeken.
Vouw in de hiërarchieWindTurbine1 uit en vouw vervolgens het onderliggende object met de naam WindTurbineBody uit. Hiermee wordt het onderliggende object met de naam Windmill_Turbine_001:Propellors10 weergegeven.
Selecteer Windmill_Turbine_001:Propellors10 en houd er vervolgens rekening mee dat deze in de InspectoreenAtur-onderdeel bevat met de Animator-controller met de naam WindTurbine1Propellers.
Deze Entertainer is wat onze animatie zal verzorgen.
Sleep het Windmill_Turbine_001:Propellors10 GameObject uit de hiërarchie en zet deze in de scriptgrafiek neer in het eerste veld in het knooppunt Trigger instellen dat zich in de eerste groep bevindt.
Sleep het Windmill_Turbine_001:Propellors10 GameObject opnieuw uit de hiërarchie en zet deze in de scriptgrafiek neer in het eerste veld in het knooppunt Trigger instellen dat zich in de tweede groep bevindt.
Het script is nu voltooid.
Uw werk testen
Sla het project op en druk vervolgens op de knop Play van unity-editor.
Zoals eerder vermeld, plaatst u in de play-modus uw avatar in het Chapter3 Sphere Terrace. Draai de scène naar rechts en loop vervolgens naar de knop Teleport naar Hoofdstuk 4 en druk erop.
U bent nu in het Chapter4 Sphere Terrace. Sleep WindTurbine1 (herinnering: het is het verst in de rug, met de rode bladen) over de oceaan. Merk op dat de bladen van de turbine nu draaien.
Sleep dezelfde turbine weg van de oceaan en plaats deze terug op het tafelblad. Merk op dat de bladen van de turbine niet meer draaien.
Wanneer u klaar bent met het observeren van de animatie, drukt u op de knop Afspelen van Unity-editor om de afspeelmodus af te sluiten.
Je hoeft de andere windturbines niet bij te werken---we hebben het al voor je gedaan.
Station 4.3: Beperkende lichamen
Op dit moment is er geen beperking waar een deelnemer een windturbine kan neerzetten. We hopen dat ze de turbines in de oceaan plaatsen waar ze de wind kunnen vangen, maar een deelnemer kan bijvoorbeeld per ongeluk een turbine op de vloer laten vallen. We willen dit voorkomen, dus om ervoor te zorgen dat de turbines alleen op het tafelblad of in de oceaan kunnen landen, kunnen we een insluitingsveld opzetten. Dit is in feite een transparante doos---de turbines worden beperkt tot de binnenkant van de doos.
Vouw in de hiërarchie het gameobject 4.3 -- Constraining Bodies uit en selecteer het onderliggende object met de naam Containment Field.
Selecteer in de Inspector de knop Onderdeel toevoegen en voeg vervolgens het onderdeel Insluitingsveld toe.
Selecteer in het onderdeel Insluitingsveld de knop '+' rechts van de optie Betrokken lichamen en selecteer vervolgens in het pop-upmenu de voorwaarde GameObjectnaam .
Typ 'WindTurbine' in het vak Begint met . Aangezien alle drie de windturbines in onze scène beginnen met "WindTurbine" zullen ze allemaal beperkt zijn tot het Containment Field.
Uw werk testen
Sla het project op en druk vervolgens op de knop Play van unity-editor.
Zoals eerder vermeld, plaatst u in de play-modus uw avatar in het Chapter3 Sphere Terrace. Draai de scène naar rechts en loop vervolgens naar de knop Teleport naar Hoofdstuk 4 en druk erop.
U bent nu in het Chapter4 Sphere Terrace. Sleep een van de windturbines weg van het tafelblad en de oceaan en probeer het op de vloer te laten vallen. Het insluitingsveld voorkomt dat u dit doet.
Hoofdstuk 4: Samenvatting
In dit hoofdstuk hebt u Mesh-functies toegevoegd waarmee deelnemers aan uw ervaring het volgende kunnen doen:
Een object ophalen en verplaatsen
Een animatie activeren wanneer de deelnemer een object naar een triggervolume sleept
Een object alleen neerzetten in een bepaald gebied dat u hebt opgegeven