Fonctionnement de l’équipement de wand
Vue d’ensemble de Wand
Important
Si vous débutez avec Les Équipementables, nous vous recommandons de lire l’article nommé Hold objets de manière réaliste avec Les Éléments d’équipement avant de lire cet article.
Le Wand est l’un des équipementables disponibles dans le package Toybox que vous recevez lorsque vous téléchargez nos exemples Mesh à partir de GitHub. Lorsque vous prenez le Wand, vous le maintenez devant vous presque la poitrine haute et le Wand affiche un effet de particule de vapeur sparkly à sa pointe.
Pour activer wand, cliquez sur le bouton gauche de la souris (PC) ou le bouton déclencheur du contrôleur (Quest). Vos poussées de bras vers l’avant et l’extrémité du Wand émettent des feux d’artifice qui sont générés par un autre effet de particule.
Le type d’activation de Wand est défini sur un seul. Cela signifie que dès qu’il passe par ses comportements, le wand désactive et votre bras retourne à sa position initiale. Cliquez à nouveau pour répéter les comportements.
Graphique de script Wand
Examinons le fonctionnement de Wand en examinant le graphique de script qui lui 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 quand la wand est récupérée
Dans le script visuel attaché au Wand, nous commençons notre analyse dans le groupe de nœuds nommé Vérification si tenue pour démarrer la lumière magique.
Nœud qui détermine si la wand est récupérée ou non est corps interagissant mesh : Is Mine. Il s’agit d’un booléen, et commence par une valeur false.
Lorsqu’un avatar récupère le Wand, son état change. La valeur de isMine passe à « true » et cette valeur est passée à un nœud if . Cela provoque un « son de prise » pour déclencher ...
... et modifie également la valeur de la variable objet StartGlowVFX sur « true ».
Notez que le texte au-dessus des nœuds isMine et On State Changed indique « Local to this client ».
Ces nœuds, ainsi que le son déclenché, se produisent localement. Toutefois, nous voulons que les autres participants de l’événement connaissent ce qui se passe avec le Wand. Pour ce faire, insérez le nœud Set Object Variable qui affiche le texte « Partagé par tous les clients ».
Conseil : La variable isMine se trouve dans le script Corps interagissant mesh.
Activer l’effet de particule d’état non activé
Nous récupérons le flux dans le groupe de nœuds nommé Networking 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 wand. Nous allons appeler cet effet « vapeur sparkly ».
La modification de l’état entraîne le passage de la valeur « true » de startFLowVFX à un nœud si ..
... et cela entraîne la valeur de la variable objet PersistentVFX également true, ce qui déclenche l’effet de particules vfx_wand-ethereal_persistent_02 (« vapeur sparkly »).
Activer le wand
Supposons que le participant clique sur le bouton gauche de la souris (PC) ou sur le bouton déclencheur du contrôleur (Quest). C’est ce qu’on appelle « activation de l’équipementable ». Elle provoque la modification de la position du bras de l’avatar, et dans le groupe de nœuds nommé Networking isPressed ...
... le clic est détecté par le corps interagissant mesh : nœud activé . Ce nœud est un booléen avec une valeur par défaut de false. Le clic est activé sur « true » ; le nœud Activé modifié transmet la valeur « true » au nœud If . Cela provoque le fait que le nœud Set Variable définisse la valeur booléenne isPressed sur l’opposé de ce qu’il était avant (donc maintenant il est « true »).
Conseil : La variable isActivated se trouve dans le script Corps interagissant mesh.
Activer l’effet de particule d’état activé
Nous récupérons le flux dans le groupe de nœuds nommé Cast Orthographique en cliquant.
Ce groupe de nœuds déclenche l’effet de particule de feu d’artifice à la fin de la wand qui se produit lorsque le participant clique sur le bouton et active le wand. Une fois que le Wand retourne à son état non activé, ce groupe de nœuds transforme le premier effet de particule (« vapeur sparkly ») sur.
Dans le graphique, la valeur « true » de isPressed* entraîne le déclenchement d’un nœud if pour déclencher le nœud Set Variable : Object . Ce nœud définit la variable startGlowVFX sur « false ».
Cela déclenche à nouveau les nœuds dans le groupe de nœuds StartMagic Networking. Cette fois, la valeur « false » de startGlowVFX entraîne la désactivation de l’effet de particule PersistentVFX.
Revenez au cast orthographique en cliquant sur le groupe de nœuds. Après une courte période de refroidissement, un son est lu, puis un effet de particule différent est déclenché à l’extrémité 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 est remplacée par « true », ce qui transforme l’effet de vfx_wand_ethereal_persistent_02 système de particules (« vapeur sparkly ») dans le groupe Networking startMagic .
À ce stade, le bras de l’avatar revient à la position où il était avant que le Wand ait été activé et la vapeur sparkly 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 une seconde, un autre « état » ou un ensemble de comportements. Toutefois, le type d’activation de Wand est « unique », ce qui signifie que chaque fois que le participant clique, le même « état » ou le même ensemble de comportements est répété.
Pour libérer le Wand, le participant appuie sur la touche Espace ; cela provoque les chutes de Wand au sol. Quand le Wand n’est pas tenu, nous ne voulons pas que l’effet de particule de vapeur sparkly s’exécute à l’extrémité du Wand. Les nœuds dans le cas contraire, désactivez le groupe de nœuds Wand pour désactiver cet effet de particule.
Pendant que le Wand est conservé, la valeur du corps interagissant mesh : Get Equipped At* est « DefaultHand ». La valeur du nœud Emplacement d’équipe (un booléen) est « None ». Ces deux valeurs sont comparées dans le nœud Égal (également un booléen) ; étant donné qu’elles ne sont pas identiques, la sortie d’Equal est « false » et si le nœud n’est pas déclenché.
Lorsque la wand est supprimée, la valeur de Get Equipped At passe à « Aucun ». Cela entraîne la sortie des nœuds Equal et If « true ». Cela déclenche la variable Set : Nœud objet qui transforme la valeur de la variable objet startGlowVFX sur « false ».
Cela déclenche à nouveau les nœuds du groupe de nœuds Networking startMagic et désactive l’effet de particule « sparkly vapor » (vfx_wand_ethereal_persistent_02) qui est la valeur de la variable objet PersistantVFX .
Suggestions d’expérience avec le script
- Créez différents effets qui peuvent être déclenchés quand l’un des équipementables existants est récupéré et maintenu.
- Créez de nouveaux équipementables qui pourraient utiliser certains des effets existants. Par exemple, certains types de feux d’artifice peuvent utiliser les effets « sparkle » actuellement utilisés par le Wand.
- Créez différents effets et comportements pour un nouvel équipement pouvant être déclenché lorsque l’équipement est maintenu et que le bouton gauche de la souris (PC) ou le bouton contrôleur (Quest) est enfoncé. Par exemple, au lieu d’un Wand, vous pourriez avoir une tige de pêche qui casse un lure lorsque vous appuyez sur le bouton.
- Pensez à la différence entre avoir un objet se déplacer directement dans son état activé lorsqu’il est récupéré (par exemple, l’extraction) et avoir un objet qui démarre non activé, puis se déplace dans son état activé après que le participant clique (par exemple, la tablette). Rendre les objets qui tirent parti des deux approches.