Hoe de Equippable Wand werkt
Wandoverzicht
Belangrijk
Als u niet bekend bent met Equippables, raden we u aan om het artikel met de naam Hold-objecten realistisch te lezen met Equippables voordat u dit artikel leest.
The Wand is een van de Equippables die beschikbaar is in het Toybox-pakket dat u ontvangt wanneer u onze Mesh-voorbeelden downloadt van GitHub. Wanneer je de Wand oppikt, hou je het voor je bijna borst hoog en de Wand geeft een sparkly damp deeltje effect aan zijn tip.
Als u de wand wilt activeren , klikt u op de linkermuisknop (pc) of controllertriggerknop (Quest). Je arm duwt vooruit en de tip van de Wand zendt vuurwerk uit dat door een ander deeltjeseffect wordt gegenereerd.
Het activeringstype van de Wand is ingesteld op één. Dit betekent dat zodra het door zijn gedrag loopt, de Wand de-activateert en uw arm terugkeert naar de oorspronkelijke positie. Klik nogmaals om het gedrag te herhalen.
De wandscriptgrafiek
Laten we eens kijken hoe de Wand werkt door de scriptgrafiek te bekijken die eraan is gekoppeld.
Open het toybox-voorbeeld en zorg ervoor dat u zich in de toybox-scène bevindt.
Selecteer in de hiërarchie de Wand_Prefab GameObject.
Ga in Inspector naar het onderdeel Script Machine en noteer dat het een scriptgrafiekasset bevat met de naam MagicWand. Klik op de knop Grafiek bewerken.
Detecteren wanneer de wand wordt opgehaald
In het visuele script dat is gekoppeld aan de Wand, starten we onze analyse in de knooppuntgroep Met de naam Controleren of Vastgehouden wordt om magische gloed te starten.
Het knooppunt dat bepaalt of de Wand wordt opgehaald of niet Mesh Interactable Body is : Is Mine. Het is een Booleaanse waarde en begint met de waarde False.
Wanneer een avatar de Wand ophaalt, verandert de status ervan. De waarde van isMine verandert in 'true' en die waarde wordt doorgegeven aan een if-knooppunt . Dit zorgt ervoor dat een 'pick-upgeluid' wordt geactiveerd ...
... en wijzigt ook de waarde van de objectvariabele StartGlowVFX in 'true'.
Houd er rekening mee dat de tekst boven de knooppunten isMine en On State Changed 'Local to this client' (Lokaal voor deze client) staat.
Deze knooppunten en het geluid dat wordt geactiveerd, vinden lokaal plaats. We willen echter dat de andere deelnemers in het evenement ervaren wat er met de Wand gebeurt. Dit wordt bereikt door het knooppunt Objectvariabele instellen in te voegen waarin de tekst 'Gedeeld door alle clients' wordt weergegeven.
Tip: De variabele isMine is te vinden in het script Mesh Interactable Body .
Schakel het niet-geactiveerde statusdeeltjeeffect in
We halen de stroom op in de knooppuntgroep met de naam Networking startMagic. Het doel van deze knooppuntgroep is om het eerste deeltjeseffect dat wordt weergegeven op de punt van de Wand aan en uit te schakelen. We noemen dit effect "sparkly vapor".
De statuswijziging zorgt ervoor dat de waarde 'true' van startFLowVFX wordt doorgegeven aan een if-knooppunt .
... en dit zorgt ervoor dat de waarde van de persistentVFX-objectvariabele ook waar is, waardoor het vfx_wand-ethereal_persistent_02 deeltjessysteem ('sparkly vapor')-effect wordt geactiveerd.
De wand activeren
Stel dat de deelnemer op de linkermuisknop (PC) of controllertriggerknop (Quest) klikt. Dit wordt 'het activeren van de Equippable' genoemd. Het zorgt ervoor dat de armpositie van de avatar verandert, en in de knooppuntgroep met de naam Networking isPressed ...
... de klik wordt gedetecteerd door de Mesh Interactable Body: is geactiveerd knooppunt. Dit knooppunt is een Booleaanse waarde met een standaardwaarde onwaar. De klikwijzigingen worden geactiveerd in 'true'. Het knooppunt On State Changed geeft de waarde 'true' door aan het if-knooppunt . Dit zorgt ervoor dat het knooppunt Variabele instellen de Booleaanse waarde is ingedrukt op het tegenovergestelde van wat het eerder was (dus nu is het 'waar').
Tip: De variabele isActivated vindt u in het script Mesh Interactable Body .
Het geactiveerde statusdeeltjeeffect inschakelen
We halen de stroom op in de knooppuntgroep met de naam Spell cast bij klikken.
Deze knooppuntgroep activeert het vuurwerkdeeltjeeffect aan het einde van de Wand die optreedt wanneer de deelnemer op de knop klikt en de Wand activeert. Nadat de Wand terugkeert naar de niet-geactiveerde toestand, zet deze knooppuntgroep het eerste deeltjeseffect ('sparkly vapor') weer aan.
In de grafiek zorgt de waarde 'true' van isPressed* ervoor dat het knooppunt Set Variable: Object node activeert. Met dit knooppunt wordt de variabele startGlowVFX ingesteld op false.
Hiermee worden de knooppunten in de groep Networking startMagic-knooppunt opnieuw geactiveerd. Deze keer zorgt de 'false'-waarde van startGlowVFX ervoor dat het PersistentVFX-deeltjeseffect wordt uitgeschakeld.
Terug naar de spellingcast bij klik op knooppuntgroep. Na een korte afkoelperiode wordt een geluid afgespeeld en wordt vervolgens een ander deeltjeseffect geactiveerd op de punt van de wand: vfx_wand_blast_trail_spheres_01 ("vuurwerk"), wat de waarde is voor de objectvariabele ShootTrailVFX .
Schakel het niet-activerende deeltjeseffect weer in
Na een andere korte cooldownperiode wordt de booleaanse waarde startGlowVFX weer gewijzigd in 'true', waardoor het vfx_wand_ethereal_persistent_02 deeltjessysteem ('sparkly vapor') weer wordt geactiveerd in de groep Networking startMagic .
Op dit moment keert de arm van de avatar terug naar de positie waarin hij zich bevond voordat de wand werd geactiveerd en de sparkly damp weer zichtbaar is.
Laat de wand los
Als de wand het activeringstype 'wisselknop' had, wanneer de deelnemer opnieuw heeft geklikt, wordt er een tweede, andere 'status' of een reeks gedragingen geactiveerd. Het activeringstype van de wand is echter 'enkel', en dit betekent dat telkens wanneer de deelnemer klikt, dezelfde 'status' of een set gedrag, wordt herhaald.
Om de Wand los te laten, drukt de deelnemer op de spatietoets; dit zorgt ervoor dat de Wand op de grond zakt. Wanneer de Wand niet wordt vastgehouden, willen we niet dat het sparkly dampdeeltjeeffect op de punt van de Wand loopt. De knooppunten in de Groep Wand-knooppunten uitschakelen als ze niet bezet zijn, schakelt u dit deeltjeseffect uit.
Terwijl de Wand wordt vastgehouden, is de waarde van de Mesh Interactable Body: Get Equipped At* is "DefaultHand". De waarde van het knooppunt Equip Location (een Booleaanse waarde) is 'Geen'. Deze twee waarden worden vergeleken in het gelijk-knooppunt (ook een Booleaanse waarde). Omdat ze niet hetzelfde zijn, is de uitvoer van Gelijk onwaar en het if-knooppunt niet geactiveerd.
Wanneer de wand wordt verwijderd, verandert de waarde van Get Equipped At in 'Geen'. Dit zorgt ervoor dat de knooppunten Gelijk en If 'true' uitvoeren. Hiermee activeert u de variabele Set Variable: Object node, waarmee de waarde van de startGlowVFX-objectvariabele wordt ingesteld op 'false'.
Dit activeert opnieuw de knooppunten in de groep Networking startMagic-knooppunten en schakelt het deeltjeseffect 'sparkly vapor' uit-vfx_wand_ethereal_persistent_02- dit is de waarde van de persistentantVFX-objectvariabele.
Suggesties voor experimenteren met het script
- Maak verschillende effecten die kunnen worden geactiveerd wanneer een van de bestaande Equippables wordt opgehaald en vastgehouden.
- Maak nieuwe Equippables die enkele van de bestaande effecten kunnen gebruiken. Bepaalde soorten vuurwerk kunnen bijvoorbeeld de "sparkle" effecten gebruiken die momenteel door de Wand worden gebruikt.
- Maak verschillende effecten en gedragingen voor een nieuwe Equippable die kan worden geactiveerd wanneer de Equippable wordt vastgehouden en de linkermuisknop (PC) of controllerknop (Quest) wordt ingedrukt. In plaats van een Wand kunt u bijvoorbeeld een visstaaf hebben die een lus uitwerpt wanneer u op de knop drukt.
- Denk na over het verschil tussen het direct verplaatsen van een object naar de geactiveerde status bij het ophalen (bijvoorbeeld de zoomfunctie) en het hebben van een object dat niet-geactiveerd wordt gestart en vervolgens naar de geactiveerde status gaat nadat de deelnemer heeft geklikt (bijvoorbeeld de tablet). Objecten maken die gebruikmaken van beide benaderingen.