Come funziona la bacchetta di equipazzabile
Panoramica della bacchetta
Importante
Se non si ha familiarità con Equippables, è consigliabile leggere l'articolo denominato Hold objects realisticamente con Equippables prima di leggere questo articolo.
La bacchetta è una delle equipizzabili disponibili nel pacchetto Toybox che si riceve quando si scaricano gli esempi mesh da GitHub. Quando si prende la bacchetta, si tiene fuori di fronte a voi quasi torace alto e la bacchetta mostra un effetto di particella vapore sparkly alla sua punta.
Per attivare la bacchetta, fare clic sul pulsante sinistro del mouse (PC) o sul pulsante di attivazione del controller (Quest). Il braccio spinge in avanti e la punta della bacchetta emette fuochi d'artificio generati attraverso un altro effetto particella.
Il tipo di attivazione della bacchetta è impostato su single. Ciò significa che non appena scorre attraverso i suoi comportamenti, la bacchetta si attiva e il braccio torna alla sua posizione iniziale. Fare di nuovo clic per ripetere i comportamenti.
Grafico dello script Wand
Diamo un'occhiata al funzionamento della bacchetta esaminando il grafico dello script a esso collegato.
Aprire l'esempio Toybox e assicurarsi di essere nella scena Toybox .
Nella gerarchia selezionare il Wand_Prefab GameObject.
In Inspector (Controllo) passare al componente Script Machine (Computer script) e notare che contiene un asset a grafo di script denominato MagicWand. Fare clic sul pulsante Modifica grafico .
Rilevare quando viene prelevata la bacchetta
Nello script visivo collegato alla bacchetta si avvia l'analisi nel gruppo di nodi denominato Verifica se Si tiene per avviare l'alone magico.
Il nodo che determina se la bacchetta viene prelevata o meno è Mesh Interactable Body: Is Mine.The node that determine if the Wand is pick up up or not is mesh interactable Body: Is Mine. Si tratta di un valore booleano e inizia con il valore False.
Quando un avatar prende la bacchetta, il suo stato cambia. Il valore di isMine viene modificato in "true" e tale valore viene passato a un nodo if . Questo fa sì che un "suono pick-up" si attivi ...
... e modifica anche il valore della variabile oggetto StartGlowVFX su "true".
Si noti che il testo sopra i nodi isMine e On State Changed indica "Local to this client".
Questi nodi, e il suono che viene attivato, si verificano localmente. Tuttavia, vogliamo che gli altri partecipanti nell'evento verifichino ciò che accade con la bacchetta. A tale scopo, inserire il nodo Imposta variabile oggetto che visualizza il testo "Condiviso da tutti i client".
Suggerimento: la variabile isMine è disponibile nello script Mesh Interactable Body.
Attivare l'effetto particella di stato non attivato
Il flusso viene raccolto nel gruppo di nodi denominato Networking startMagic. Lo scopo di questo gruppo di nodi è quello di attivare e disattivare l'effetto particella iniziale che appare alla punta della bacchetta. Questo effetto verrà chiamato "vapore sparkly".
La modifica dello stato fa sì che il valore "true" di startFLowVFX venga passato a un nodo if .
... e questo fa sì che anche il valore della variabile oggetto PersistentVFX sia true, che attiva l'effetto vfx_wand-ethereal_persistent_02 particella ("vapore sparkly").
Attivare la bacchetta
Si supponga che il partecipante faccia clic sul pulsante sinistro del mouse (PC) o sul pulsante di attivazione del controller (Quest). Questo è chiamato "attivazione dell'equippable". Fa sì che la posizione del braccio dell'avatar cambi e nel gruppo di nodi denominato Networking isPressed ...
... il clic viene rilevato dal nodo Mesh Interactable Body: Is Activated . Questo nodo è un valore booleano con un valore predefinito false. Il clic cambia in "true"; il nodo On State Changed passa il valore "true" al nodo If . In questo modo il nodo Imposta variabile imposta il valore booleano isPressed sull'opposto di quello che era in precedenza (ora è "true").
Suggerimento: la variabile isActivated è disponibile nello script Mesh Interactable Body.
Attivare l'effetto di particella dello stato attivato
Il flusso viene prelevato nel gruppo di nodi denominato Cast ortografico facendo clic.
Questo gruppo di nodi attiva l'effetto particella fuochi d'artificio alla fine della bacchetta che si verifica quando il partecipante fa clic sul pulsante e attiva la bacchetta. Dopo che la bacchetta torna allo stato non attivato, questo gruppo di nodi riaccese il primo effetto di particella ("vapore sparkly").
Nel grafico, il valore "true" di isPressed* fa sì che un nodo attivi il nodo Imposta variabile: oggetto. Questo nodo imposta la variabile startGlowVFX su "false".
In questo modo i nodi nel gruppo di nodi Networking startMagic vengono nuovamente attivati. Questa volta, il valore "false" di startGlowVFX causa la disattivazione dell'effetto particella PersistentVFX .
Tornare al gruppo di nodi Spell Cast (Cast ortografico) nel gruppo di nodi click . Dopo un breve periodo di raffreddamento, viene riprodotto un suono e quindi viene attivato un effetto particella diverso alla punta della bacchetta: vfx_wand_blast_trail_spheres_01 ("fuochi d'artificio"), che è il valore per la variabile oggetto ShootTrailVFX .
Riattivare l'effetto particella non attiva
Dopo un breve periodo di raffreddamento, il valore booleano startGlowVFX viene nuovamente impostato su "true", che trasforma nuovamente l'effetto vfx_wand_ethereal_persistent_02 sistema di particelle ("vapore sparkly") nel gruppo Networking startMagic .
A questo punto, il braccio dell'avatar torna alla posizione in cui era prima dell'attivazione della bacchetta e il vapore sparkly può essere visto di nuovo.
Rilasciare la bacchetta
Se la bacchetta aveva il tipo di attivazione "toggle", quando il partecipante ha fatto clic di nuovo, attiverebbe un secondo, diverso "stato" o set di comportamenti. Tuttavia, il tipo di attivazione della bacchetta è "single" e questo significa che ogni volta che il partecipante fa clic, lo stesso "stato" o set di comportamenti, viene ripetuto.
Per rilasciare la bacchetta, il partecipante preme il tasto Space; questo fa cadere la bacchetta a terra. Quando la bacchetta non è tenuta, non vogliamo che l'effetto di particella vapori sparkly scappa alla punta della bacchetta. I nodi nel gruppo Se non occupato, Disattiva gruppo di nodi bacchetta disattiva questo effetto particella.
Mentre la bacchetta viene mantenuta, il valore di Mesh Interactable Body: Get Equipped At* è "DefaultHand". Il valore del nodo Equip Location (un valore booleano) è "None". Questi due valori vengono confrontati nel nodo Uguale (anche un valore booleano). Poiché non sono uguali, l'output di Equal è "false" e il nodo se non viene attivato.
Quando la bacchetta viene eliminata, il valore di Get Equipped At cambia in "Nessuno". In questo modo i nodi Equal e If generano l'output "true". In questo modo viene attivata la variabile Imposta variabile: oggetto che trasforma il valore della variabile oggetto startGlowVFX su "false".
Ciò attiva nuovamente i nodi nel gruppo di nodi Networking startMagic e disattiva l'effetto di particella "vapore sparkly", vfx_wand_ethereal_persistent_02, ovvero il valore della variabile di oggetto PersistantVFX .
Suggerimenti per sperimentare lo script
- Crea diversi effetti che possono essere attivati quando viene prelevato e mantenuto uno degli equipaggiamenti esistenti.
- Creare nuovi equipazzabili che potrebbero usare alcuni degli effetti esistenti. Ad esempio, alcuni tipi di fuochi d'artificio potrebbero utilizzare gli effetti "sparkle" attualmente utilizzati dalla bacchetta.
- Crea diversi effetti e comportamenti per un nuovo equipazzabile che può essere attivato quando si tiene l'equipazzabile e viene premuto il pulsante sinistro del mouse (PC) o il pulsante del controller (Quest). Ad esempio, invece di una bacchetta, si potrebbe avere una canna da pesca che getta un'esca quando si preme il pulsante.
- Si pensi alla differenza tra avere un oggetto spostarsi direttamente nello stato attivato quando viene prelevato (ad esempio, drill) e avere un oggetto che inizia non attivato e quindi si sposta nello stato attivato dopo i clic del partecipante (ad esempio, il tablet). Rendere gli oggetti che sfruttano entrambi gli approcci.