Avatares NPC
Mostrar y controlar un Avatar NPC
Muestra un avatar como una entidad en una escena.
Crea un avatar
El siguiente fragmento crea un avatar con wearables y forma corporal 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: (obligatorio) Identificador interno del Avatar
También están disponibles los siguientes campos opcionales:
name: Nombre que se mostrará sobre la cabeza del Avatar. Predeterminado: "NPC".bodyShape: Cadena para definir qué forma corporal usar. Las opciones válidas son 'urn:decentraland:off-chain:base-avatars:BaseMale' y 'urn:decentraland:off-chain:base-avatars:BaseFemale'.wearables: Matriz con la lista de URNs de wearables que el avatar tiene puestos actualmente. Si los wearables entran en conflicto (como si dos de ellos fueran sombreros), el último de la lista reemplaza al otro.emotes: Matriz con la lista de URNs de emotes NFT que el avatar puede reproducireyeColor: Color3 para el color de los ojos (cualquier color es válido)skinColor: Color3 para el color de la piel (cualquier color es válido)hairColor: Color3 para el color del cabello (cualquier color es válido)hablando: Si true, muestra un conjunto de barras verdes junto al nombre, como cuando los jugadores usan chat de voz en el mundo.
📔 Nota: La AvatarShapecomponent debe importarse mediante
import { AvatarShape } from "@dcl/sdk/ecs"
Consulta Imports para saber cómo manejarlos fácilmente.
📔 Nota: Los campos URN deben seguir el mismo formato usado para NFTShapes: urn:decentraland:<CHAIN>:<CONTRACT_STANDARD>:<CONTRACT_ADDRESS>:<TOKEN_ID>
Animations
Los Avatars reproducen animaciones idle predeterminadas mientras están quietos.
Para reproducir animaciones en el avatar, establece la expressionTriggerId cadena en el nombre de la animación que quieres reproducir.
El expressionTriggerId el campo admite todas las animaciones predeterminadas, así como animaciones personalizadas de 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 sola vez; si quieres que el avatar siga reproduciendo una animación en bucle, debes crear un sistema que le indique que reproduzca la animación de nuevo cada par de segundos.
Usa la expressionTriggerTimestamp para reproducir de nuevo el mismo emote. El valor de este campo es un timestamp de Lamportíndice
Así que la primera vez que reproduces un emote, estableces expressionTriggerTimestamp en 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 sobre la que ya actuó.
El siguiente fragmento crea un sistema que ejecuta el mismo emote cada 2 segundos:
Copiar wearables del jugador
El siguiente fragmento cambia los wearables y otras características de un avatar NPC para que coincidan con las que el jugador lleva puestas actualmente. Esto podría usarse en una escena como un maniquí, para mostrar un wearable o emote particular combinado con el conjunto actual del jugador.
Mostrar solo wearables
Usa la showOnlyWearables campo para mostrar solo los wearables enumerados de un avatar. El resto del cuerpo del avatar será invisible.
Esto es útil para mostrar wearables, por ejemplo en una tienda.
Adjuntar una entidad a un NPC
Puedes usar la AvatarAttach función para fijar una entidad a uno de los huesos de un avatar NPC, por ejemplo para que el NPC esté sosteniendo un objeto en su mano. La entidad se moverá junto con el avatar cuando se anime.
Para usar esta función, usa la id propiedad en el AvatarShape para asignar un id arbitrario a este avatar, y luego hacer referencia a ese id en la AvatarAttach. El id puede ser cualquier cadena que quieras.
Aprende más sobre el AvatarAttach componente aquí.
Última actualización