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.
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.
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é.
Ouvrez l’exemple Toybox et vérifiez que vous êtes dans la scène Toybox .
Dans la hiérarchie, sélectionnez le Wand_Prefab GameObject.
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 .
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.
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.
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 ...
... et modifie également la valeur de la variable objet StartGlowVFX en « true ».
Notez que le texte situé au-dessus des nœuds isMine et On State Changed indique « Local de ce client ».
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 ».
Conseil : la variable isMine se trouve dans le script Mesh Interactable Body .
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 ».
Le changement d’état entraîne le passage de la valeur « true » de startFLowVFX à un nœud if ..
... 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 »).
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 ...
... 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 »).
Conseil : la variable isActivated se trouve 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.
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 ».
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 .
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 .
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 .
À 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.
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.
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é.
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 ».
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 .
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.