Funciones obsoletas

Funciones heredadas

Las siguientes funciones son todas legacy y deben evitarse. Todavía funcionan, pero en el futuro podrían dejar de ser compatibles. Todos estos ejemplos incluyen enlaces a formas alternativas de obtener la misma información o lograr los mismos resultados.

El jugador entra o sale de la escena

Cada vez que un avatar entra o sale de los parcels de land que componen tu scene, o hace teleport hacia dentro o fuera, esto crea un event que puedes escuchar. Este event se activa con todos los avatars, incluido el del player.

import {
	onEnterSceneObservable,
	onLeaveSceneObservable,
} from '@dcl/sdk/observables'

onEnterSceneObservable.add((player) => {
	console.log('player entered scene: ', player.userId)
})

onLeaveSceneObservable.add((player) => {
	console.log('player left scene: ', player.userId)
})

Las observables onEnterScene y onLeaveScene importadas desde '@dcl/sdk/observables' también están obsoletas. Las funciones correctas tienen el mismo nombre, pero se importan desde '@dcl/sdk/src/players' en su lugar. En el ejemplo de abajo puedes ver ambas variantes, primero la versión obsoleta y luego la correcta.

Player se conecta o desconecta

Obtén la lista completa de players actualmente conectados desde getConnectedPlayers.

Cada vez que otro player empieza o deja de renderizarse por el engine local, esto crea un event que puedes escuchar. Los players pueden o no estar en la misma scene que tú, pero deben estar dentro del rango visual (no necesariamente a la vista). La onPlayerConnectedObservable detecta tanto cuando un player se conecta cerca por primera vez como cuando se acerca lo suficiente para estar en rango visual, del mismo modo la onPlayerDisconnectedObservable detecta cuando un player termina su sesión o se aleja demasiado.

Ten en cuenta que, si otros players ya se están renderizando en los alrededores antes de que el player cargue tu scene, este event no notificará a la scene recién cargada sobre los players que ya existían. Si necesitas hacer seguimiento de todos los players actuales, puedes consultar los players existentes al cargar la scene y luego escuchar este event para recibir actualizaciones.

Consultar todos los jugadores en la escena

También puedes obtener la lista completa de players que actualmente están en tu scene y se están renderizando llamando a getPlayersInScene().

El jugador reproduce una animación

Cada vez que el player ejecuta un emote (baile, aplauso, saludo, etc.), puedes detectar este event.

El evento incluye la siguiente información:

  • expressionId: Nombre del emote realizado (es decir: wave, clap, kiss)

El jugador cambia de perfil

Cada vez que el player hace un cambio en su perfil, se llama al onProfileChanged event. Estos cambios pueden incluir ponerse diferentes wearables, cambiar el nombre, la descripción, activar experiencias portátiles, etc.

Los datos del event incluyen solo el ID del player y un número de versión para el perfil de ese avatar, según el catalyst server. Cada vez que se propaga un cambio, el número de versión aumenta en 1.

Cuando se activa este event, puedes usar la getUserData() function para obtener la versión más reciente de esta información, incluida la lista de wearables que lleva el player. Puede que necesites añadir un pequeño retraso antes de llamar a getUserData() para asegurarte de que la versión que devuelve esta function esté actualizada.

💡 Consejo: Al probar en preview con el legacy web explorer, para evitar usar un avatar aleatorio, ejecuta la scene en el navegador conectado con tu wallet de Metamask.

Scene finished loading

Cuando la scene termina de cargar, se llama a onSceneReadyObservable . Esto funciona tanto si el player entra directamente en la scene como si camina hasta ella desde otro lugar. Cuando todo el contenido de la scene ha terminado su carga inicial, incluidos los modelos pesados, etc., se llama a este event.

Métodos obsoletos de datos del player

Para obtener información del player actual que está ejecutando la scene, usa getUserData().

El ejemplo de abajo importa el ~system/UserIdentity namespace y ejecuta getUserData().

Puedes obtener datos de otros players cercanos llamando a getPlayerData(), pasando el id de una cuenta de Decentraland.

Ambas getUserData() y getPlayerData() devuelven la misma estructura de datos disponible a través de la content API. Consulta Datos de cualquier player

getPlayerData() solo puede obtener datos de players que estén actualmente cerca. No tienen que estar necesariamente en la misma scene, pero sí dentro del rango visual; esto se debe a que esta información se obtiene del engine local que está renderizando estos avatars. Para probarlo en preview, abre una segunda pestaña e inicia sesión con una cuenta diferente.

El getUserPublicKey() y getUserAccount() functions también están obsoletas. Por favor usa getPlayer() en su lugar. Consulta Datos del usuario.

Obtener hora de skybox

Obtener realm

Es modo preview

Player hace clic en otro player

Cada vez que el player hace clic en otro player, puedes detectar un event.

El event incluye los siguientes datos:

  • userId: El id del player sobre el que se hizo clic

  • ray: Datos sobre el ray trazado por el clic

    • direction: Vector3 Un Vector3 normalizado que representa la dirección desde el punto de origen del clic hasta el punto de impacto del clic.

    • distance: number La distancia en metros desde el punto de origen hasta el punto de impacto.

    • origin: Vector3 El punto de origen del clic, la posición del player que hizo el clic, relativa a la scene.

💡 Consejo: El comportamiento predeterminado al hacer clic en otro player es abrir el passport del player, donde puedes ver información adicional sobre ese player, añadirlo como amigo, etc. Puedes desactivar la apertura de esta UI para que no interfiera con la experiencia que quieres construir añadiendo un Avatar Modifier Area.

Player bloquea/desbloquea el cursor

Los jugadores pueden alternar entre dos modos de cursor: cursor bloqueado modo para controlar la cámara o cursor desbloqueado modo para mover el cursor libremente por la UI.

Los jugadores desbloquean el cursor haciendo click en el botón derecho del mouse o presionando la tecla Esc y vuelven a bloquear el cursor haciendo click en cualquier parte de la pantalla.

Este onPointerLockedStateChange event se activa cada vez que un player cambia entre estos dos modos, mientras está cerca de la scene.

Player cambia de realm o island

Los players en Decentraland existen en realmsseparados, y en islands separadas dentro de cada realm. Los players en diferentes realms o islands no pueden verse, interactuar ni chatear entre sí, incluso si están de pie sobre los mismos parcels.

Cada vez que el player cambia de realms o island, el onRealmChangedObservable event se llama.

Este event incluye los siguientes campos:

  • serverName: string; El nombre del catalyst server.

  • room: string; El nombre de la island.

  • displayName: string; El nombre del catalyst server seguido de un - y el nombre de la island. Por ejemplo unicorn-x011.

  • domain: string; La url del catalyst server que se está usando.

A medida que los players se mueven por el mapa, pueden cambiar de island para agruparse con aquellos players que están más cerca de ellos. Las islands también desplazan sus fronteras dinámicamente para acomodar un grupo manejable de personas en cada una. Así que incluso si un player permanece quieto, podría cambiar de island a medida que otros entren y salgan de las scenes cercanas.

Si tu scene depende de un servidor de 3rd party para sincronizar cambios entre players en tiempo real, entonces quizá quieras compartir datos solo entre players agrupados en la misma realm+island, así que es una buena práctica cambiar rooms en el servidor de 3rd party cada vez que los players cambian de island.

Funciones de criptografía

Eventos de Video

Cuando un Video cambia su estado de reproducción, la onVideoEvent observable recibe un event.

La entrada de un event de Video contiene las siguientes properties:

  • videoClipId ( string): El ID de la entity que cambió de estado.

  • componentId (string): El ID de la entity que cambió de estado.

  • currentOffset (number): El valor actual de la property seek en el Video. Este valor muestra los segundos transcurridos desde el inicio original del Video. -1 por defecto.

  • totalVideoLength (number ): La duración en segundos de todo el Video. -1 si la duración es desconocida.

  • videoStatus: El valor del nuevo estado de Video de la VideoTexture, expresado como un valor de la VideoStatus enum. Este enum puede contener los siguientes valores posibles:

  • VideoStatus.NONE = 0,

  • VideoStatus.ERROR = 1,

  • VideoStatus.LOADING = 2,

  • VideoStatus.READY = 3,

  • VideoStatus.PLAYING = 4,

  • VideoStatus.BUFFERING = 5

Última actualización