Smart Items - Avançado

Usando smart items em sua cena para adicionar interatividade.

A maioria dos smart items possui um módulo básico onde você pode configurar apenas as configurações mais comuns de forma simples, mas você pode rolar para baixo além do Advanced marcador para personalizar quase tudo sobre como o item se comporta.

O item a seguir tem um componente Transform e um módulo básico que expõe apenas os campos básicos para configurar um botão. Mas se você rolar para baixo além do Advanced marcador, você encontrará todas as configurações disponíveis.


circle-info

📔 Nota: A maioria das configurações no módulo básico também está disponível nos componentes mais abaixo. As alterações feitas no módulo básico são refletidas nos componentes mais abaixo e vice-versa, exceto em alguns casos onde as configurações básicas são uma abstração de múltiplas configurações mais abaixo. Nesses casos, alterar as configurações avançadas para valores que não são suportados pelo módulo básico resultará no campo do módulo básico sendo marcado como indefinido.

Configuração avançada

As propriedades estão agrupadas em components. Diferentes smart items podem ter componentes diferentes, dependendo de sua funcionalidade.

O comportamento da maioria dos itens é controlado por:

  • Actions: O componente Actions define coisas que o item pode fazer. Por exemplo tocar um som, reproduzir uma animação, mover-se para cima ou ficar invisível.

  • Triggers: O componente Triggers atribui quais eventos fazem essas ações acontecerem. Por exemplo quando o jogador clica no item, quando o jogador entra em uma área, ou quando a cena carrega pela primeira vez.

Por exemplo, em um smart item de porta, o Actions component inclui ações "Open" e "Close". O Triggers component nesse item inclui um On Click trigger que ativa a ação "Open" quando a porta é clicada pelo jogador.

Os triggers de um smart item podem ativar ações em qualquer smart item na cena, não apenas naquele mesmo smart item. Por exemplo, um smart item de botão pode ter um Triggers component que ativa a ação "move up" definida no Actions component de uma plataforma flutuante.

Triggers também podem ocorrer condicionalmente. Por exemplo, smart items de porta incluem dois On Click triggers em seu componente Triggers: um abre a porta se ela estava fechada, o outro fecha a porta se ela estava aberta. Para mais detalhes veja States and conditional logic.

Interações entre itens

Para fazer itens interagirem entre si:

  • Um item precisa ter pelo menos uma ação definida em um Actions component.

  • O outro item precisa de um trigger no Triggers component que aponte para essa ação.

Por exemplo, para fazer um botão abrir uma porta:

  1. Adicione qualquer smart item de botão, abra seu Triggers component. Ele tem um evento trigger padrão que reproduz um som e uma animação para o próprio botão.

  2. Clique no + sign ao lado de Assigned Actions, para adicionar uma terceira ação naquele mesmo evento trigger.

  3. Selecione o smart item da porta no primeiro dropdown.

  4. No segundo dropdown, selecione a ação "Open".


circle-info

💡 Tip: Você pode em vez disso criar um novo evento Trigger que trate apenas da ação da porta. Ambos os eventos trigger são chamados toda vez que o botão é clicado.



Qualquer item pode acionar qualquer ação de outro item, desde que a ação esteja definida. Veja Triggers para mais maneiras pelas quais uma ação pode ser acionada.

Você pode usar states and conditional logic para acionar uma ação somente se uma condição for satisfeita. A condição pode até verificar o estado de um terceiro smart item. Por exemplo, um botão só abre a porta se um smart item personalizado "power generator" tiver seu estado definido como "On".

Actions

O Actions component lista ações que o item pode executar. Cada smart item inclui um conjunto de ações pré-definidas. Você pode personalizar ações existentes ou adicionar novas. Os seguintes tipos de ações estão disponíveis:

  • Play Animation: Reproduz uma animação no modelo 3D do item. Veja About playing animations

  • Stop Animation: Para todas as animações sendo reproduzidas pelo modelo 3D do item.

  • Play Sound: Reproduz um som a partir de um arquivo, na localização do item. Veja About playing sounds

  • Stop Sound: Para todos os sons reproduzidos pelo item.

  • Start Tween: Faz uma mudança gradual na posição, rotação ou escala ao longo de um período determinado. Veja Moving, rotating or scaling.

  • Set Visibility: Torna o item visível ou invisível.

  • Attach To Player: Define o item como filho do avatar do jogador. Por exemplo para segurá-lo na mão ou acima da cabeça.

  • Detach From Player: Destaca (desanexa) o item do avatar do jogador.

  • Open Link: Abre um link para um site externo.

circle-info

📔 Nota: Esta ação só pode ocorrer como resultado de clicar em um item. Não pode ser acionada por entrar em uma área trigger.

  • Move Player: Altera a posição do jogador para um conjunto de coordenadas locais dentro da cena. Só é possível mover o jogador dentro da mesma cena.

  • Teleport Player: Teleporta um jogador para as coordenadas de outra cena em Decentraland. Os jogadores aparecerão no spawn-point da cena de destino.

  • Move Player: Altera a posição do jogador para outra posição dentro da mesma cena, usando coordenadas relativas à origem da cena.

  • Play Emote: Faz o avatar do jogador executar uma das animações padrão do avatar (ex.: acenar, ou aplaudir).

  • Play Custom Emote: Faz o avatar do jogador executar uma animação customizada, a partir de um arquivo carregado na cena.

  • Show Text: Exibe texto na UI da tela, a ser ocultado após alguns segundos. Ideal para dicas, falas de diálogo, notificações, etc.

  • Hide Text: Oculta qualquer texto de UI que possa estar sendo exibido atualmente.

  • Start Delay: Atrasa outra ação do mesmo item por quantos segundos você precisar.

  • Stop Delay: Cancela quaisquer ações adiadas no item.

  • Start Loop: Reproduz novamente uma ação do mesmo item de forma recorrente em um intervalo determinado.

  • Stop Loop: Cancela quaisquer ações em loop no item.

  • Play Video Stream: Reproduz um vídeo como material em uma primitiva.

  • Stop Video Stream: Para quaisquer vídeos atualmente reproduzidos.

  • Play Audio Stream: Reproduz uma stream de áudio.

  • Stop Audio Stream: Para quaisquer streams de áudio atualmente reproduzidas.

  • Open link: Abre um link em uma aba do navegador. Os jogadores são perguntados se confiam no domínio antes de prosseguir.

  • Clone: Duplica um item na posição designada.

  • Remove: Exclui um item da cena.

  • Show Image: Exibe uma imagem na UI, possivelmente por um tempo limitado. Pode também incluir legenda.

  • Hide Image: Oculta qualquer imagem atualmente exibida na UI via a ação Show Image.

  • Damage: Reduz a vida em qualquer barra de saúde que esteja próxima. A Layer propriedade pode determinar se ela atua apenas em barras de saúde do player, ou em outros itens.

  • Move player here: Altera a posição do jogador para a posição deste item.

  • Place on Player: Altera a posição do item para a do jogador.

  • Rotate as Player: Altera a rotação do item para a do jogador.

  • Place on Camera: Altera a posição do item para a da câmera.

  • Rotate as Camera: Altera a rotação do item para a da câmera.

  • Set Position: Altera a posição do item para uma posição específica. Pode ser absoluta ou relativa à sua posição atual.

  • Set Rotation: Altera a rotação do item para uma rotação específica. Pode ser absoluta ou relativa à sua rotação atual.

  • Set Scale: Altera a escala do item para uma escala específica. Pode ser absoluta ou relativa à sua escala atual.

  • Follow Player: Começa a mover e virar na direção da posição do jogador. Ignora quaisquer obstáculos no caminho. Você pode definir a velocidade e fazer com que se mova apenas em certos eixos. Min Distance determina o quão perto ele chegará do jogador.

  • Stop Following Player: Para a ação Follow Player.

  • Random Action: Uma das ações listadas aqui será executada aleatoriamente com probabilidade igual cada vez que a ação aleatória for chamada. Você pode listar qualquer uma das ações que pertencem ao item.

  • Batch Actions: Todas as ações listadas aqui serão executadas simultaneamente cada vez que a ação em lote for chamada. Você pode listar qualquer uma das ações que pertencem ao item.

  • Heal Player: Restaura vida na barra de saúde do jogador.

Veja states and conditional logic para saber sobre outras ações relacionadas a condições lógicas.

O Actions component define ações possíveis, mas estas não fazem nada na cena a menos que sejam acionadas. As ações são ativadas por um trigger, seja do mesmo smart item ou de outro diferente.

Para adicionar uma nova ação a um item, clique no Add New Action botão na parte inferior do componente Action. Então dê um nome à ação, selecione um tipo e preencha quaisquer campos adicionais específicos ao tipo de ação.



Triggers

O Triggers component define eventos trigger, estes ativam ações quando um certo evento acontece. Os seguintes tipos de eventos trigger existem:

Veja states and conditional logic para saber sobre outros triggers relacionados a condições lógicas.

Para adicionar um novo trigger, clique no Add New Trigger Event na parte inferior do componente Trigger. Então selecione o tipo de trigger, a entidade que você quer ativar e uma ação dessa entidade.


circle-info

📔 Nota: Uma ação precisa estar definida no Actions component da entidade antes que você possa acioná-la. Triggers só podem afetar entidades que tenham um componente Actions.

About Playing Animations

Use uma ação do tipo Play Animation para executar uma animação no modelo 3D do smart item. A animação precisa já existir como parte do arquivo do modelo 3D. O Select Animation dropdown exibe uma lista de todas as animações disponíveis no modelo 3D.

O Play Mode campo permite que você selecione se uma animação deve tocar apenas uma vez ou se deve continuar em loop.



Uma vez criada a ação, você pode ativá-la via o Triggers component desse mesmo item ou de qualquer outro item.

Use o Stop Animation action para parar todas as animações do item, tanto em loop quanto não em loop.

circle-info

💡 Tip: Para verificar facilmente o conteúdo de um modelo 3D, para ver quais animações ele inclui e como elas se apresentam, uma boa ferramenta é o Babylon Sandboxarrow-up-right. Basta arrastar o arquivo do modelo 3D para a janela. Um dropdown com uma lista de suas animações deve aparecer na parte inferior.

Para saber mais sobre animações e como você pode criar as suas próprias como parte de um modelo 3D, veja Animationsarrow-up-right.

About Playing sounds

Use uma ação do tipo Play Sound para reproduzir um arquivo de som. Você pode reproduzir qualquer arquivo de som desde que ele esteja importado para o projeto da cena. O som é ouvido posicionalmente, a partir da localização do item, significando que soa mais alto se o jogador estiver mais próximo.

circle-info

💡 Tip: Em vez de digitar o caminho para o arquivo de som, você pode arrastá-lo para o campo Path a partir do menu de navegação de arquivos na parte inferior do Scene Editor.

Use o Play Mode campo para escolher se o som será reproduzido uma vez ou em loop contínuo.



Uma vez criada a ação, você pode ativá-la via o Triggers component desse mesmo item ou de qualquer outro item.

Use o Stop Sound action para parar todos os sons do item, tanto em loop quanto não em loop. Isso também para sons do AudioSource component.

Para fazer um item reproduzir um som em loop sempre, por exemplo para ambiente ou música, é mais fácil usar o AudioSource component, em vez de usar Actions e Triggers. Este componente somente requer que você forneça um caminho para um arquivo e marque as caixas Start Playing e Loop.


circle-info

📔 Nota: Um smart item só pode reproduzir um som por vez. Invocar um segundo som interromperá quaisquer outros sons atualmente tocando. Isso também se aplica aos sons do componente AudioSource component. Se você precisar que dois sons toquem juntos, considere adicionar uma entidade invisível na mesma localização para segurar uma Play Sound action.

Veja sounds para mais sobre reproduzir sons no Decentraland.

Movendo, rotacionando ou escalando

Use uma Start Tween action para mudar a position, scale, ou rotation, do item ao longo de um período de tempo. Todas as Start Tween actions começam a partir do estado original do item e mudam para um estado final ao longo de um período de tempo.

Tweens em posição podem ser relativos ou absolutos. Um tween absoluto em posição move o item para uma posição fixa em relação à cena. O item se moverá de onde estiver para essa posição. Se já estiver lá, não parecerá se mover. Um tween relativo em posição move o item uma certa distância de onde está agora, por exemplo um tween para uma posição relativa de 1, 0, 0 move o item 1 metro para frente, na direção que ele está atualmente virado. Se você executar a ação tween uma segunda vez, o item se moverá mais um metro para frente.

Tweens em rotação também podem ser relativos ou absolutos. Uma rotação relativa é adicionada à rotação atual do item. Um tween absoluto em rotação fará com que o item olhe para uma direção específica, relativa à cena.

Use o Duration campo para definir quanto tempo todo o movimento deve durar, em segundos. Note que o controle deslizante vai até 100 segundos, mas você também pode escrever um número maior manualmente se precisar.



Uma vez criada a ação, você pode ativá-la via o Triggers component desse mesmo item ou de qualquer outro item.

Tweens podem seguir diferentes Curve Types que afetam a taxa de mudança ao longo do tempo. Uma linear curve (padrão), significa que a velocidade da mudança é constante do início ao fim. Há muitas opções para escolher, que desenham curvas com formas diferentes dependendo se o começo e/ou o fim começam devagar, e o quanto. Uma easeinexpo curve começa devagar e termina rápido, aumentando a velocidade exponencialmente, ao contrário de uma easeoutexpo curve que começa rápido e termina devagar.


circle-info

💡 Tip: Experimente diferentes curvas de movimento. As diferenças são frequentemente sutis, mas subconscientemente interpretamos informações a partir de como as coisas se movem, como peso, fricção ou até personalidade.

Use On Tween End eventos trigger no Triggers component para ativar uma ação depois que um tween terminar. Use states and conditional logic para descrever um caminho em loop para uma plataforma flutuante, para que ela se mova constantemente entre dois locais.

Quando um item executa um tween, isso afeta tudo sobre o item. Por exemplo, se ele muda a escala, isso altera a escala do seu modelo 3D visível e também da geometria do colisor invisível, o tamanho do texto, etc. Se o item tiver filhos (aninhados na árvore de entidades à esquerda), essas entidades filhas também são afetadas pelo tween.

circle-info

📔 Nota: Cada entidade só pode executar um tween por vez. Por exemplo, você não pode fazer um item mover-se lateralmente e também girar ao mesmo tempo. Como solução alternativa, você pode usar entidades parented. Por exemplo, você pode ter uma entidade pai invisível que se move lateralmente, com um filho visível que gira.

About click triggers

Para acionar uma ação clicando em um item, crie um On Click trigger. A ação será ativada toda vez que o jogador clicar na entidade.



Veja Tornar qualquer item inteligente para mais detalhes.

circle-info

📔 Nota: Ao usar modelos 3D personalizados, o modelo deve ter uma geometria de colisor invisível para que possa ser clicável. Veja colliders.

Como alternativa, você pode configurar o GLTF component do item, para que seu Visible Layer de colisão esteja definido para Pointer.

Outra alternativa é adicionar um Click Area smart item, para desenhar um cubo que se sobreponha ao item que você deseja clicar. O smart item Click Area é um invisible item.

Trigger on spawn

Triggers do tipo On Spawn ativam uma ação quando a cena é carregada. Em vez de esperar que o jogador interaja com um item, a ação é executada imediatamente.

Por exemplo, use isso para fazer uma plataforma mover-se continuamente. Use um On Spawn trigger para ativar uma ação tween. Em seguida use On State Change triggers para mantê-la movendo entre duas ou mais posições.



Multiplayer

Todos os smart items são multiplayer por padrão. Veja Smart Items - Basic para mais detalhes.

Você pode alterar ou ajustar esse comportamento multiplayer para sincronizar apenas certos componentes do item.

No Multiplayer component do item, marque as caixas para os componentes que você deseja compartilhar.

Por exemplo, uma porta compartilha seu Animator para que todos vejam as animações de abertura, seu AudioSource para que todos ouçam seu som, e seu State para que todos acompanhem se ela está atualmente aberta ou fechada. A porta não compartilha seu Visibility component, porque a porta geralmente está sempre visível. Se você incluir ações para alternar sua visibilidade, talvez queira marcar esse componente também, para que as mudanças sejam sincronizadas entre todos os jogadores.

Itens invisíveis

Alguns itens não são feitos para serem vistos pelo jogador, mas são visíveis enquanto você edita sua cena para tornar mais fácil gerenciá-los. Este é o caso de itens como Ambience, Trigger Area, Click Area, etc.

No modo avançado, esses itens têm um Visibility component definido como invisível. Este componente não afeta a visibilidade dos itens no Scene Editor, mas qualquer item definido como invisível não é visto pelos jogadores ao executar uma visualização.

Veja também

Atualizado