Compartilhar via


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.

GIF que mostra um participante do evento segurando a varinha em seu estado não ativado.

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.

GIF que mostra um participante do evento ativando a varinha que gera fogos de artifício.

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.

  1. Abra o exemplo Toybox e verifique se você está na cena Toybox.

  2. Na Hierarquia, selecione o Wand_Prefab GameObject.

    Uma captura de tela da Hierarquia com a Estrutura Pré-fabricada da Varinha destacada.

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

    Uma captura de tela do componente Máquina de Script da Varinha com o botão Editar Gráfico destacado.

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.

Uma captura de tela do gráfico completo do script da Varinha com a segunda seção destacada.

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.

Uma captura de tela do nó isMine.

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

Uma captura de tela do estado on alterado, if e reproduzir nós de áudio de malha.

... e também altera o valor da variável de objeto StartGlowVFX para "true".

Uma captura de tela do nó de valor do objeto definido com o valor start flow vfx.

Observe que o texto acima dos nós isMine e On State Changed diz "Local para este cliente".

Uma captura de tela do é meu e no palco nós alterados com o local para este texto do cliente destacado.

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

Uma captura de tela do nó da variável de objeto definido com o texto compartilhado por todos os clientes realçado.

Dica: A variável isMine é encontrada no script Corpo interacionável de malha.

Uma captura de tela do booleano é meu no script Mesh Interactable Body.

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

Uma captura de tela do gráfico completo do script da Varinha com a quinta seção destacada.

A mudança de estado faz com que o valor "true" de startFLowVFX seja passado para um nó if ..

Uma captura de tela da variável get object, on stage changed e if nodes.

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

Uma captura de tela do nó ativo definido com o valor do booleano que aciona o efeito de partícula definido como true.

GIF que mostra um participante do evento segurando a varinha em seu estado não ativado.

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

Uma captura de tela do gráfico completo do script da Varinha com a quarta seção destacada.

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

Uma captura de tela do nó é ativado e de outros nós que causam é pressionado para serem verdadeiros.

Dica: A variável isActivated é encontrada no script Corpo interacionável de malha.

Uma captura de tela da variável é ativada no script Corpo interativo 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.

Uma captura de tela do gráfico completo do script da Varinha com a terceira seção destacada.

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

Uma captura de tela do booleano de brilho inicial vfx alterada para falso

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.

Uma captura de tela do booleno de efeitos visuais persistente foi alterada para false, o que desativa o efeito da primeira partícula.

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 .

Uma captura de tela dos nós que acionam o som do estado ativado e o efeito de partícula.

GIF que mostra um participante do evento ativando a varinha que gera fogos de artifício.

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.

Uma captura de tela dos nós que ativam o efeito de partícula de vapor brilhante novamente.

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.

GIF que mostra um participante do evento segurando a varinha em seu estado não ativado.

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.

Uma captura de tela do gráfico de script completo da Varinha com a primeira seção destacada.

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.

Uma captura de tela do nó get equipped at com um valor de Default Hand enquanto a varinha ainda está segurada.

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

Uma captura de tela do nó get equipped at com um valor none depois que a varinha for descartada.

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 .

Uma captura de tela do booleno vfx persistente foi alterada para false, o que desativa o efeito de partícula de vapor brilhante.

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.

Próximas etapas