For the complete documentation index, see llms.txt. This page is also available as Markdown.

NPC Avatars

Exiba e controle o avatar NPC

Exiba um avatar como uma entity em uma scene.

💡 Dica: Experimente a biblioteca NPC Toolkit para uma experiência mais fácil ao lidar com NPCs, especialmente se você precisar interagir por meio de uma árvore de conversa.

Crie um avatar

O snippet a seguir cria um avatar com wearables e body shape aleatórios, e nome "NPC".

const myAvatar = engine.addEntity()
AvatarShape.create(myAvatar)

Transform.create(myAvatar, {
	position: Vector3.create(4, 0.25, 5),
})

Ao passar dados para gerar um AvatarShape, os seguintes campos são obrigatórios:

  • id: (obrigatório) Identificador interno do Avatar

Os seguintes campos opcionais também estão disponíveis:

  • name: Nome a ser exibido acima da cabeça do Avatar. Padrão: "NPC".

  • bodyShape: String para definir qual body shape usar. As opções válidas são 'urn:decentraland:off-chain:base-avatars:BaseMale' e 'urn:decentraland:off-chain:base-avatars:BaseFemale'.

  • wearables: Array com a lista de URNs dos wearables que o avatar está usando no momento. Se houver conflito entre wearables (como dois deles serem chapéus), o último da lista substitui o outro.

  • emotes: Array com a lista de URNs para NFT emotes que o avatar é capaz de reproduzir

  • eyeColor: Color3 para a cor dos olhos (qualquer cor é válida)

  • skinColor: Color3 para a cor da pele (qualquer cor é válida)

  • hairColor: Color3 para a cor do cabelo (qualquer cor é válida)

  • talking: Se true, ele exibe um conjunto verde de barras ao lado do nome, como quando os jogadores usam bate-papo por voz no mundo.

  • 💡 Dica: Consulte tipos de cor para mais detalhes sobre como definir cores.

Animações

Avatars reproduzem as animações idle padrão enquanto estão parados.

Para reproduzir animações no avatar, defina o expressionTriggerId string para o nome da animação que você quer reproduzir.

O expressionTriggerId o campo suporta todas as animações padrão, bem como animações personalizadas de um arquivo de scene, e até URNs de emotes que são publicados no Marketplace.

Animações em loop

Animações em um AvatarShape é reproduzida uma vez, se você quiser que o avatar continue em loop em uma animação, você deve criar um System que diga para ele reproduzir a animação novamente a cada poucos segundos.

Use a expressionTriggerTimestamp para reproduzir novamente o mesmo emote. O valor deste campo é um timestamp de Lamport, o que significa que não é um valor de tempo, mas sim um índice que é incrementado em 1 a cada repetição do emote.

Então, na primeira vez que você reproduz um emote, você define expressionTriggerTimestamp para 0. Para reproduzir o emote novamente, você deve atualizar esse valor para 1. É assim que o Engine sabe que esta é uma nova instrução, e não uma instrução sobre a qual ele já agiu.

O snippet a seguir cria um System que executa o mesmo emote a cada 2 segundos:

💡 Dica: Você deve conhecer a duração do emote e fazer dela a duração do System. Se você criar um emote que mantenha o avatar parado na mesma pose, é recomendável fazer a duração do emote maior que a do System. Dessa forma, você pode garantir que não haja artefatos ao finalizar e redefinir a animação.

Copie os wearables do player

O snippet a seguir altera os wearables e outras características de um avatar NPC para corresponder aos que o player está usando no momento. Isso pode ser usado em uma scene como um manequim, para exibir um wearable ou emote específico combinado com o outfit atual do player.

Exibir apenas wearables

Use a showOnlyWearables campo para exibir apenas os wearables listados de um avatar. O restante do corpo do avatar ficará invisível.

Isso é útil para exibir wearables, por exemplo em uma loja.

💡 Dica: Se um wearable for bastante קטן, tente definir o scale do Transform para um valor maior.

Anexe uma entity a um NPC

Você pode usar o AvatarAttach recurso para fixar uma entity a um dos bones de um avatar NPC, por exemplo para que o NPC esteja segurando um objeto na mão. A entity se moverá junto com o avatar quando ele animar.

Para usar este recurso, use o id propriedade no AvatarShape para atribuir um id arbitrário a este avatar e, em seguida, referenciar esse id no AvatarAttach. O id pode ser qualquer string que você quiser.

Saiba mais sobre o AvatarAttach componente aqui.

Atualizado