Partager via


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.

GIF montrant un participant à l’événement contenant le wand dans son état non activé.

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.

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

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é.

  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 surbrillance.

  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 de Wand avec le bouton Modifier le graphique mis en surbrillance.

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.

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

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.

Capture d’écran du nœud isMine.

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 ...

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

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

Capture d’écran du nœud définir la valeur de l’objet avec le flux de démarrage de valeur vfx.

Notez que le texte au-dessus des nœuds isMine et On State Changed indique « Local to this client ».

Capture d’écran de la mine et des nœuds modifiés par étape avec le texte local de ce texte client mis en surbrillance.

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 ».

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

Conseil : La variable isMine se trouve dans le script Corps interagissant mesh.

Capture d’écran de la mine booléenne 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 ».

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

La modification de l’état entraîne le passage de la valeur « true » de startFLowVFX à un nœud si ..

Capture d’écran de la variable d’objet get, en phase modifiée et si les nœuds.

... 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 »).

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 montrant un participant à l’événement contenant le wand dans son état non activé.

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 ...

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

... 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 »).

Capture d’écran du nœud activé et d’autres nœuds qui provoquent l’appui sur true.

Conseil : La variable isActivated se trouve dans le script Corps interagissant mesh.

Capture d’écran de la variable activée dans le script Mesh Interactable Body.

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.

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

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 ».

Capture d’écran de la lumière de début vfx booléen modifiée en 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.

Une capture d’écran du boolen vfx persistant a changé en false, ce qui désactive le premier effet de particule.

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 .

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

GIF montrant 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 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 .

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

À 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.

GIF montrant un participant à l’événement contenant 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 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.

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

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é.

Capture d’écran de la prise en charge sur le nœud avec une valeur de main par défaut pendant que la wand est toujours conservée.

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 ».

Capture d’écran de la prise en charge sur le nœud avec une valeur nulle après la suppression du Wand.

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 .

Une capture d’écran du boolen vfx persistant a changé en false, ce qui désactive l’effet de particule de vapeur sparkly.

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.

Étapes suivantes