Partager via


Fonctionnement de la baguette équipable

Vue d’ensemble de la baguette

Important

Si vous débutez avec Equipages, nous vous recommandons de lire de manière réaliste l’article intitulé Hold objects with Equipables avant de lire cet article.

Le Wand est l’un des équipements disponibles dans le package Toybox que vous recevez lorsque vous téléchargez nos exemples Mesh à partir de GitHub. Quand vous prenez la baguette, vous le tenez devant vous presque la poitrine haute et la baguette affiche un effet de particules de vapeur scintillant à sa pointe.

GIF qui montre un participant à l’événement tenant le wand dans son état non activé.

Pour activer le wand, cliquez sur le bouton gauche de la souris (PC) ou le bouton déclencheur du contrôleur (Quest). Votre bras pousse vers l’avant et la pointe de la baguette émet des feux d’artifice qui sont générés par un autre effet de particule.

GIF qui montre un participant à l’événement activant le wand qui génère ensuite des feux d’artifice.

Le type d’activation du wand est défini sur unique. Cela signifie que dès qu’il traverse ses comportements, le wand se désactive et votre bras revient à sa position initiale. Cliquez à nouveau pour répéter les comportements.

Wand dans l’exemple Toybox

Le préfabriqué Wand est déjà ajouté à la scène dans l’exemple Toybox. Vous pouvez donc simplement ouvrir cet exemple de projet et y expérimenter le Wand.

Graphique de script Wand

Examinons le fonctionnement du wand en examinant le graphe de script qui y est attaché.

  1. Ouvrez l’exemple Toybox et vérifiez que vous êtes dans la scène Toybox .

  2. Dans la hiérarchie, sélectionnez le Wand_Prefab GameObject.

    Capture d’écran de la hiérarchie avec le préfabriqué Wand mis en évidence.

  3. Dans l’inspecteur, accédez au composant Machine de script et notez qu’il contient une ressource de graphe de script nommée MagicWand. Cliquez sur le bouton Modifier le graphique .

    Capture d’écran du composant Machine de script du wand avec le bouton Modifier le graphique mis en évidence.

Détecter le moment où le wand est récupéré

Dans le script visuel attaché à la baguette, nous commençons notre analyse dans le groupe de nœuds nommé Check if Held pour démarrer la lueur magique.

Capture d’écran du graphique de script complet du wand avec la deuxième section mise en évidence.

Le nœud qui détermine si le wand est récupéré ou non est Mesh Interactable Body : Is Mine. Il s’agit d’un booléen et commence par une valeur false.

Capture d’écran du nœud isMine.

Lorsqu’un avatar récupère la baguette, son état change. La valeur de isMine devient « true » et cette valeur est passée à un nœud if . Cela provoque un « son de prise » à déclencher ...

Une capture d’écran de l’état on a modifié, si et lire les nœuds audio de maillage.

... et modifie également la valeur de la variable objet StartGlowVFX en « true ».

Capture d’écran du nœud set object value avec l’élément vfx du flux de démarrage de la valeur.

Notez que le texte situé au-dessus des nœuds isMine et On State Changed indique « Local de ce client ».

Une capture d’écran du est à moi et sur la scène a changé de nœuds avec le texte local de ce client mis en surbrillance.

Ces nœuds, ainsi que le son qui est déclenché, se produisent localement. Toutefois, nous voulons que les autres participants à l’événement expémentent ce qui se passe avec la wand. Pour ce faire, insérez le nœud Définir la variable d’objet qui affiche le texte « Partagé par tous les clients ».

Capture d’écran du nœud définir la variable d’objet avec le texte partagé par tous les clients mis en surbrillance.

Conseil : la variable isMine se trouve dans le script Mesh Interactable Body .

Une capture d’écran du est à moi booléen dans le script Corps interagissant de maillage.

Activer l’effet de particule d’état non activé

Nous récupérons le flux dans le groupe de nœuds nommé Mise en réseau startMagic. L’objectif de ce groupe de nœuds est d’activer et de désactiver l’effet de particule initial qui apparaît à l’extrémité de la baguette. Nous appellerons cet effet « vapeur étincelante ».

Capture d’écran du graphique de script complet du wand avec la cinquième section mise en évidence.

Le changement d’état entraîne le passage de la valeur « true » de startFLowVFX à un nœud if ..

Capture d’écran de la variable d’objet get, sur la scène modifiée, et si les nœuds.

... la valeur de la variable d’objet PersistentVFX est également true, ce qui déclenche l’effet vfx_wand-ethereal_persistent_02 système de particules (« vapeur étincelante »).

Capture d’écran du nœud actif défini avec la valeur de la valeur booléenne qui déclenche l’effet de particule défini sur true.

GIF qui montre un participant à l’événement tenant le wand dans son état non activé.

Activer le wand

Supposons que le participant clique sur le bouton gauche de la souris (PC) ou le bouton déclencheur du contrôleur (Quest). C’est ce qu’on appelle « activation de l’Équipementable ». Cela entraîne la modification de la position du bras de l’avatar, et dans le groupe de nœuds nommé Mise en réseau estPressed ...

Capture d’écran du graphique de script complet du wand avec la quatrième section mise en évidence.

... le clic est détecté par le nœud Mesh Interactable Body : Is Activated . Ce nœud est un booléen avec la valeur par défaut false. Le clic est activé sur « true » ; le nœud On State Changed transmet la valeur « true » au nœud If . Cela amène le nœud Set Variable à définir le booléen isPressed à l’opposé de ce qu’il était auparavant (donc maintenant, il est « true »).

Une capture d’écran du nœud est activée et les autres nœuds qui provoquent sont appuyés pour être vrais.

Conseil : la variable isActivated se trouve dans le script Corps interagissant maillage .

Une capture d’écran de la variable est activée dans le script Corps interagissant maillage.

Activer l’effet de particule d’état activé

Nous récupérons le flux dans le groupe de nœuds nommé Spell cast on click.

Capture d’écran du graphique de script complet du wand avec la troisième section mise en évidence.

Ce groupe de nœuds déclenche l’effet de particules de feu d’artifice à la fin de la baguette qui se produit lorsque le participant clique sur le bouton et active le wand. Une fois que la baguette revient à son état non activé, ce groupe de nœuds réactive le premier effet de particule (« vapeur étincelante »).

Dans le graphique, la valeur « true » de isPressed* entraîne le déclenchement du nœud set Variable : Object par un nœud if. Ce nœud définit la variable startGlowVFX sur « false ».

Une capture d’écran de la valeur booléenne vfx de début est passée à false

Cela déclenche à nouveau les nœuds du groupe de nœuds startMagic mise en réseau. Cette fois, la valeur « false » de startGlowVFX entraîne la désactivation de l’effet de particule PersistentVFX .

Une capture d’écran du boolen vfx persistant est passée à false, ce qui désactive le premier effet de particule.

Revenez au groupe de nœuds De retour orthographique sur clic . Après une brève période de refroidissement, un son est lu, puis un effet de particule différent est déclenché à la pointe de la baguette : vfx_wand_blast_trail_spheres_01 (« feux d’artifice »), qui est la valeur de la variable d’objet ShootTrailVFX .

Capture d’écran des nœuds qui déclenchent le son d’état activé et l’effet de particules.

GIF qui montre un participant à l’événement activant le wand qui génère ensuite des feux d’artifice.

Réactiver l’effet de particule non activé

Après une autre brève période de refroidissement, la valeur booléenne startGlowVFX revient à « true », ce qui active l’effet vfx_wand_ethereal_persistent_02 système de particules (« vapeur sparkly ») dans le groupe StartMagic de mise en réseau .

Capture d’écran des nœuds qui réactivent l’effet scintillement des particules de vapeur.

À ce stade, le bras de l’avatar revient à la position dans laquelle il se trouvait avant que la baguette ne soit activée et la vapeur étincelante peut être vue à nouveau.

GIF qui montre un participant à l’événement tenant le wand dans son état non activé.

Libérer le wand

Si le wand avait le type d’activation « bascule », lorsque le participant a cliqué à nouveau, il déclencherait un deuxième« état » différent ou un ensemble de comportements. Toutefois, le type d’activation du wand est « unique », ce qui signifie que chaque fois que le participant clique, le même « état », ou ensemble de comportements, est répété.

Pour libérer le wand, le participant appuie sur la touche Espace ; ce qui provoque la chute de la baguette au sol. Lorsque la baguette n’est pas tenue, nous ne voulons pas que l’effet de particules de vapeur scintillant s’exécute à la pointe de la baguette. Les nœuds du groupe De nœuds si non occupés, désactiver l’effet de particules sont désactivés.

Capture d’écran du graphique de script complet du wand avec la première section mise en évidence.

Pendant que le wand est conservé, la valeur du corps interagissant de maillage : Get Equipd At* est « DefaultHand ». La valeur du nœud Emplacement d’équipement (booléen) est « None ». Ces deux valeurs sont comparées dans le nœud Égal (également un booléen) ; étant donné qu’ils ne sont pas identiques, la sortie de Equal est « false » et le nœud if n’est pas déclenché.

Capture d’écran de l’équipement au nœud avec la valeur Main par défaut pendant que la baguette est toujours tenue.

Lorsque le wand est supprimé, la valeur de Get Equipped At passe à « None ». Cela entraîne la sortie « true » des nœuds Equal et If . Cela déclenche le nœud Set Variable : Object qui transforme la valeur de la variable d’objet startGlowVFX sur « false ».

Capture d’écran de l’équipement au nœud avec la valeur none après la suppression du wand.

Cela déclenche à nouveau les nœuds dans le groupe de nœuds startMagic mise en réseau et désactive l’effet de particule « vapeur d’étincelle », vfx_wand_ethereal_persistent_02, qui est la valeur de la variable d’objet PersistantVFX .

Une capture d’écran du boolen vfx persistant est passée à false, ce qui désactive l’effet scintillement de particules de vapeur.

Suggestions pour expérimenter le script

  • Create différents effets qui pourraient être déclenchés lorsque l’un des Equipables existants est ramassé et tenu.
  • Create nouveaux equipables qui pourraient utiliser certains des effets existants. Par exemple, certains types de feux d’artifice pourraient utiliser les effets « scintilleux » qui sont actuellement utilisés par la baguette.
  • Create différents effets et comportements pour un nouvel équipement qui pourrait être déclenché lorsque l’équipement est maintenu et que le bouton gauche de la souris (PC) ou le bouton du contrôleur (Quest 2) est enfoncé. Par exemple, au lieu d’une baguette, vous pouvez avoir une canne à pêche qui jette un leurre lorsque vous appuyez sur le bouton.
  • Pensez à la différence entre le déplacement d’un objet dans son état activé lorsqu’il est récupéré (par exemple, l’extraction) et le fait d’avoir un objet qui démarre non activé, puis passe à son état activé après que le participant clique (par exemple, la tablette). Créez des objets qui tirent parti des deux approches.

Étapes suivantes