Avatares NPC

Mostrar y controlar avatar NPC

Mostrar un avatar como una entidad en una escena.

circle-info

💡 Tip: Prueba el biblioteca NPC Toolkitarrow-up-right para una experiencia más sencilla al tratar con NPCs, especialmente si necesitas interactuar mediante un árbol de conversación.

Crear un avatar

El siguiente fragmento crea un avatar con wearables y body shape aleatorios, y nombre "NPC".

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

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

Al pasar datos para generar un AvatarShape, los siguientes campos son obligatorios:

  • id: (requerido) Identificador interno para el Avatar

Los siguientes campos opcionales también están disponibles:

  • name: Nombre para mostrar sobre la cabeza del Avatar. Predeterminado: "NPC".

  • bodyShape: Cadena para definir qué body shape usar. Las opciones válidas son 'urn:decentraland:off-chain:base-avatars:BaseMale' y 'urn:decentraland:off-chain:base-avatars:BaseFemale'.

  • wearables: Array con la lista de URNs de los wearables que el avatar lleva puestos actualmente. Si los wearables entran en conflicto (por ejemplo, dos son sombreros), el último de la lista reemplaza al otro.

  • emotes: Array con la lista de URNs de emotes NFT que el avatar puede reproducir

  • eyeColor: Color3 para el color de ojos (cualquier color es válido)

  • skinColor: Color3 para el color de piel (cualquier color es válido)

  • hairColor: Color3 para el color de cabello (cualquier color es válido)

  • talking: Si true, muestra un conjunto de barras verdes junto al nombre, como cuando los jugadores usan chat de voz en el mundo.

  • circle-info

    💡 Tip: Ver tipos de color para más detalles sobre cómo establecer colores.

circle-exclamation
circle-exclamation

Animations

Los avatares reproducen animaciones idles por defecto mientras están quietos.

Para reproducir animaciones en el avatar, establece el expressionTriggerId string al nombre de la animación que quieres reproducir.

El expressionTriggerId el campo admite todas las animaciones predeterminadas, así como animaciones personalizadas desde un archivo de escena, e incluso URNs de emotes que están publicados en el Marketplace.

Animaciones en bucle

Las animaciones en un AvatarShape se reproducen una vez; si quieres que el avatar siga repitiendo una animación, debes crear un sistema que le indique reproducir la animación de nuevo cada un par de segundos.

Usa la expressionTriggerTimestamp para volver a reproducir el mismo emote. El valor de este campo es un timestamp de lamportarrow-up-right, lo que significa que no es un valor de tiempo, sino más bien un índice que se incrementa en 1 por cada repetición del emote.

Así que la primera vez que reproduces un emote, estableces expressionTriggerTimestamp a 0. Para reproducir el emote de nuevo, debes actualizar este valor a 1. Así es como el engine sabe que esta es una nueva instrucción, y no una instrucción que ya ejecutó.

El siguiente fragmento crea un sistema que ejecuta el mismo emote cada 2 segundos:

circle-info

💡 Tip: Debes conocer la duración del emote y hacer que esa sea la duración del sistema. Si creas un emote que deja al avatar inmóvil en una misma pose, es recomendable hacer la duración del emote más larga que la del sistema. De esa manera, puedes asegurarte de que no haya artefactos al finalizar y reiniciar la animación.

Copiar wearables del jugador

El siguiente fragmento cambia los wearables y otras características de un avatar NPC para que coincidan con los que el jugador tiene puestos actualmente. Esto podría usarse en una escena como un maniquí, para mostrar un wearable o emote en particular combinado con el atuendo actual del jugador.

Mostrar solo wearables

Usa la show_only_wearables campo para mostrar solo los wearables listados de un avatar. El resto del cuerpo del avatar será invisible.

Esto es útil para mostrar wearables, por ejemplo en una tienda.

circle-info

💡 Tip: Si un wearable es bastante pequeño, intenta establecer el scale del Transform a un valor más grande.

Adjuntar una entidad a un NPC

Puedes usar el AvatarAttach para fijar una entidad a uno de los huesos de un avatar NPC, por ejemplo para que el NPC sostenga un objeto en su mano. La entidad se moverá junto con el avatar cuando este se anime.

Para usar esta función, usa el id propiedad en el AvatarShape para asignar un id arbitrario a este avatar, y luego referencia ese id en el AvatarAttach. El id puede ser cualquier cadena que quieras.

Aprende más sobre el AvatarAttach componente aquí.

Última actualización