Partilhar via


Como funciona a Varinha Equipável

Visão geral da varinha

Importante

Se você é novo em Equippables, recomendamos que leia o artigo chamado Hold objects realistically with Equippables antes de ler este artigo.

A Varinha é um dos Equippables disponíveis no pacote Toybox que você recebe quando baixa nossas amostras de Mesh 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 gatilho do controlador (Quest). Seu braço empurra para frente e a ponta da varinha emite fogos de artifício que são gerados através de outro efeito de partícula.

GIF que mostra um participante do evento ativando a Varinha que, em seguida, gera fogos de artifício.

O tipo de ativação da varinha está definido como único. Isto significa que, assim que passa pelos seus comportamentos, a Varinha desativa e o seu braço volta à sua posição inicial. Clique novamente para repetir os comportamentos.

O gráfico de script Wand

Vamos dar uma olhada em como a Varinha funciona examinando o gráfico de script que está anexado a ela.

  1. Abra a amostra Toybox e certifique-se de que está na cena Toybox.

  2. Na Hierarquia, selecione o Wand_Prefab GameObject.

    Uma captura de tela da Hierarquia com o pré-fabricado Wand realçado.

  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 Wand's Script Machine com o botão Editar gráfico realçado.

Detetar quando a varinha é recolhida

No script visual anexado à Varinha, iniciamos nossa análise no grupo de nós chamado Verificando se Mantido para iniciar o brilho mágico.

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

O nó que determina se a varinha é captada 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" dispare ...

Uma captura de tela do estado ativado mudou, se, 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ó set object value com o value 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 mudou nós com o local para este cliente texto realçado.

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 é conseguido inserindo o nó set Object Variable que exibe o texto "Compartilhado por todos os clientes".

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

Dica: A variável isMine é encontrada no script Mesh Interactable Body .

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

Ativar o efeito de partícula de estado não ativado

Nós pegamos o fluxo no grupo de nós chamado Networking startMagic. O objetivo deste grupo de nós é ligar e desligar o efeito de partícula inicial que aparece na ponta da varinha. Vamos chamar esse efeito de "vapor brilhante".

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

A alteração 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, no palco alterado e se nós.

... e isso faz com que o valor da variável de objeto PersistentVFX também seja true, o que desencadeia 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.

Ativar a varinha

Vamos supor que o participante clique no botão esquerdo do mouse (PC) ou no botão de gatilho do controlador (Quest). Isso é chamado de "ativar o Equippable". 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 de script completo da Varinha com a quarta seção destacada.

... o clique é detetado pelo nó Mesh Interactable Body: Is Activated . Este nó é um booleano com um valor padrão de false. O clique muda Is Activated 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 isPressed Boolean para o oposto do que era antes (então agora é "true").

Uma captura de tela do nó ativado e outros nós que causam é pressionada para ser verdadeira.

Dica: A variável isActivated é encontrada no script Mesh Interactable Body .

Uma captura de tela da variável é ativada no script Mesh Interactable Body.

Ativar o efeito de partícula de estado ativado

Captamos o fluxo no grupo de nós chamado Spell cast ao clicar.

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

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 volta a ativar o primeiro efeito de partícula ("vapor brilhante").

No gráfico, o valor "true" de isPressed* faz com que um nó if acione o nó set Variable: Object . Este nó define a variável startGlowVFX como "false".

Uma captura de tela do booleano vfx de brilho inicial alterado para false

Isso aciona os nós no grupo de nós startMagic da rede novamente. Desta vez, o valor "falso" de startGlowVFX faz com que o efeito de partícula PersistentVFX desligue.

Uma captura de tela do boolen vfx persistente mudou para false, o que desativa o primeiro efeito de partícula.

Volte para o grupo de nó Spell Cast on click . 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 para a variável de objeto ShootTrailVFX .

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

GIF que mostra um participante do evento ativando a Varinha que, em seguida, gera fogos de artifício.

Ligue 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 transforma o efeito vfx_wand_ethereal_persistent_02 sistema de partículas ("vapor brilhante") novamente no grupo Networking startMagic .

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

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 "toggle", quando o participante clicasse novamente, ela acionaria um segundo "estado" diferente ou 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 estiverem ocupados, Desligue o nó Varinha desliguem esse efeito de partícula.

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

Enquanto a varinha está sendo mantida, o valor do Mesh Interactable Body: Get Equipped At* é "DefaultHand". O valor do nó Equip Location (um booleano) é "Nenhum". Esses dois valores são comparados no nó Equal (também um booleano), já que não são os mesmos, a saída de Equal é "false" e o nó if não é acionado.

Uma captura de tela do nó get equipped at com um valor de Mão Padrão enquanto a Varinha ainda é mantida.

Quando a varinha é descartada, o valor de Get Equipped At muda para "None". 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 de none depois que a varinha foi descartada.

Isso mais uma vez aciona os nós no grupo de nós Networking startMagic 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 boolen vfx persistente mudou para false, o que desliga o efeito de partícula de vapor brilhante.

Sugestões para experimentar o script

  • Crie diferentes efeitos que podem ser acionados quando um dos Equippables existentes é pego e mantido.
  • Crie novos Equippables que possam usar alguns dos efeitos existentes. Por exemplo, certos tipos de fogos de artifício poderiam usar os efeitos de "brilho" que são usados atualmente pela Varinha.
  • Crie diferentes efeitos e comportamentos para um novo Equippable que podem ser acionados quando o Equippable é mantido e o botão esquerdo do mouse (PC) ou o botão do controlador (Quest) é pressionado. Por exemplo, em vez de uma varinha, você pode ter uma vara de pesca 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 for pego (por exemplo, o Drill) e ter um objeto que começa não ativado e, em seguida, passa para seu estado ativado depois que o participante clica (por exemplo, o Tablet). Crie objetos que aproveitem ambas as abordagens.

Próximos passos