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.
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.
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.
Abra a amostra Toybox e certifique-se de que 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 .
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.
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.
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 ...
... 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 é conseguido inserindo o nó set Object Variable que exibe o texto "Compartilhado por todos os clientes".
Dica: A variável isMine é encontrada 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".
A alteração 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 true, o que desencadeia o efeito do sistema de partículas vfx_wand-ethereal_persistent_02 ("vapor brilhante").
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 ...
... 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").
Dica: A variável isActivated é encontrada 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.
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".
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.
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 .
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 .
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 "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.
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.
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".
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 .
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.