Como funciona a Varinha Equipável
Visão geral da varinha
Importante
Se você é novo em Equippables, recomendamos que leia o artigo chamado Segure objetos de forma realista com Equippables antes de ler este artigo.
A Varinha é um dos Equippables disponíveis no pacote Toybox que você recebe ao baixar nossos exemplos de Malha do GitHub. Quando você pega a varinha, você a segura na sua frente quase na altura do peito e a varinha exibe um efeito de partícula de vapor brilhante em sua ponta.
Para ativar a varinha, clique no botão esquerdo do mouse (PC) ou no botão de acionamento do controlador (Quest). Seu braço empurra para frente e a ponta da varinha emite fogos de artifício que são gerados por outro efeito de partícula.
O tipo de ativação da varinha é definido como único. Isso significa que, assim que ele executa seus comportamentos, a varinha é desativada e seu braço retorna à sua posição inicial. Clique novamente para repetir os comportamentos.
O gráfico de script de varinha
Vamos dar uma olhada em como o Wand funciona examinando o gráfico de script anexado a ele.
Abra o exemplo Toybox e verifique se você está na cena Toybox.
Na Hierarquia, selecione o Wand_Prefab GameObject.
No Inspetor, navegue até o componente Máquina de script e observe que ele contém um ativo de gráfico de script chamado MagicWand. Clique no botão Editar gráfico .
Detecte quando a varinha é pega
No script visual anexado à varinha, iniciamos nossa análise no grupo de nós chamado Verificando se está em espera para iniciar o brilho mágico.
O nó que determina se a varinha é pega ou não é Mesh Interactable Body: Is Mine. É um booleano e começa com um valor de False.
Quando um avatar pega a varinha, seu estado muda. O valor de isMine muda para "true" e esse valor é passado para um nó if . Isso faz com que um "som de captação" seja acionado ...
... e também altera o valor da variável de objeto StartGlowVFX para "true".
Observe que o texto acima dos nós isMine e On State Changed diz "Local para este cliente".
Esses nós e o som que é acionado ocorrem localmente. No entanto, queremos que os outros participantes do evento experimentem o que acontece com a varinha. Isso é feito inserindo o nó Definir Variável de Objeto, que exibe o texto "Compartilhado por todos os clientes".
Dica: A variável isMine é encontrada no script Corpo interacionável de malha.
Ativar o efeito de partícula de estado não ativado
Pegamos o fluxo no grupo de nós chamado Networking startMagic. O objetivo desse grupo de nós é ativar e desativar o efeito de partícula inicial que aparece na ponta da varinha. Chamaremos esse efeito de "vapor brilhante".
A mudança de estado faz com que o valor "true" de startFLowVFX seja passado para um nó if ..
... e isso faz com que o valor da variável de objeto PersistentVFX também seja verdadeiro, o que aciona o efeito do sistema de partículas vfx_wand-ethereal_persistent_02 ("vapor brilhante").
Ative a varinha
Vamos supor que o participante clique no botão esquerdo do mouse (PC) ou no botão de acionamento do controlador (Quest). Isso é chamado de "ativar o Equipável". Isso faz com que a posição do braço do avatar mude e, no grupo de nós chamado Networking, isPressed ...
... o clique é detectado pelo nó Corpo interativo da malha: está ativado . Esse nó é um booleano com um valor padrão de false. O clique muda Está ativado para "true"; o nó On State Changed passa o valor "true" para o nó If . Isso faz com que o nó Set Variable defina o booleano isPressed para o oposto do que era antes (então agora é "true").
Dica: A variável isActivated é encontrada no script Corpo interacionável de malha.
Ativar o efeito de partícula de estado ativado
Pegamos o fluxo no grupo de nós chamado Feitiço lançado ao clicar.
Esse grupo de nós aciona o efeito de partícula de fogos de artifício no final da varinha que ocorre quando o participante clica no botão e ativa a varinha. Depois que a varinha retorna ao seu estado não ativado, esse grupo de nós liga o primeiro efeito de partícula ("vapor brilhante") novamente.
No gráfico, o valor "true" de isPressed* faz com que um nó if acione o nó Set Variable: Object . Esse nó define a variável startGlowVFX como "false".
Isso aciona os nós no grupo de nós startMagic de rede novamente. Desta vez, o valor "false" de startGlowVFX faz com que o efeito de partícula PersistentVFX seja desativado.
Voltar para o grupo de nós Feitiço Conjurado ao clicar . Após um breve período de resfriamento, um som é reproduzido e, em seguida, um efeito de partícula diferente é acionado na ponta da varinha: vfx_wand_blast_trail_spheres_01 ("fogos de artifício"), que é o valor da variável de objeto ShootTrailVFX .
Ativar novamente o efeito de partícula não ativada
Após outro breve período de resfriamento, o valor booleano startGlowVFX é alterado de volta para "true", o que ativa o efeito do sistema de partículas vfx_wand_ethereal_persistent_02 ("vapor brilhante") novamente no grupo startMagic de rede.
Neste ponto, o braço do avatar retorna à posição em que estava antes da varinha ser ativada e o vapor brilhante pode ser visto novamente.
Solte a varinha
Se a varinha tivesse o tipo de ativação "alternar", quando o participante clicasse novamente, ela acionaria um segundo "estado" diferente ou um conjunto de comportamentos. No entanto, o tipo de ativação da varinha é "único", e isso significa que toda vez que o participante clica, o mesmo "estado", ou conjunto de comportamentos, é repetido.
Para soltar a varinha, o participante pressiona a tecla Espaço; isso faz com que a varinha caia no chão. Quando a varinha não está sendo segurada, não queremos que o efeito de partícula de vapor brilhante corra na ponta da varinha. Os nós no grupo Se não estiver ocupado, desativar nó Varinha desativam esse efeito de partícula.
Enquanto a varinha está sendo segurada, o valor do Corpo interativo da malha: Equipar-se em* é "DefaultHand". O valor do nó Equip Location (um booleano) é "Nenhum". Esses dois valores são comparados no nó Equal (também um booleano); como eles não são os mesmos, a saída de Equal é "false" e o nó if não é disparado.
Quando a varinha é largada, o valor de Equipar-se em muda para "Nenhum". Isso faz com que os nós Igual e Se produzam "true". Isso aciona o nó Set Variable: Object que transforma o valor da variável de objeto startGlowVFX em "false".
Isso mais uma vez aciona os nós no grupo de nós startMagic da rede e desativa o efeito de partícula "vapor brilhante" - vfx_wand_ethereal_persistent_02 - que é o valor da variável de objeto PersistantVFX .
Sugestões para experimentar o script
- Crie efeitos diferentes que podem ser acionados quando um dos Equipáveis existentes é pego e segurado.
- Crie novos Equipáveis que podem usar alguns dos efeitos existentes. Por exemplo, certos tipos de fogos de artifício podem usar os efeitos de "brilho" que são usados atualmente pela varinha.
- Crie diferentes efeitos e comportamentos para um novo Equipável que podem ser acionados quando o Equipável é pressionado e o botão esquerdo do mouse (PC) ou o botão do controle (Missão) é pressionado. Por exemplo, em vez de uma varinha, você pode ter uma vara de pescar que lança uma isca quando você pressiona o botão.
- Pense na diferença entre fazer com que um objeto se mova diretamente para seu estado ativado quando pego (por exemplo, o Drill) e ter um objeto que começa não ativado e depois passa para o estado ativado depois que o participante clica (por exemplo, o Tablet). Crie objetos que aproveitem ambas as abordagens.