Funciones obsoletas

Funciones heredadas

Las siguientes funciones son heredadas y deben evitarse. Aún 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

circle-exclamation

Siempre que un avatar entra o sale de los parcelas de tierra que componen tu escena, o teleporta dentro o fuera, se crea un evento al que puedes suscribirte. Este evento es activado por todos los avatares, incluido el del jugador.

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)
})
circle-exclamation

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

Jugador se conecta o desconecta

circle-exclamation

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

Siempre que otro jugador comienza o deja de ser renderizado por el motor local, se crea un evento al que puedes suscribirte. Los jugadores pueden o no estar en la misma escena que tú, pero deben estar dentro del alcance visual (no necesariamente a la vista). El onPlayerConnectedObservable detecta tanto cuando un jugador se conecta recientemente cerca o se acerca lo suficiente para estar en el alcance visual, del mismo modo que el onPlayerDisconnectedObservable detecta cuando un jugador termina su sesión o se aleja mucho.

Ten en cuenta que si otros jugadores ya se estaban renderizando en los alrededores antes de que el jugador cargue tu escena, este evento no notificará a la escena recién cargada sobre los jugadores ya existentes. Si necesitas llevar un registro de todos los jugadores actuales, puedes consultar los jugadores existentes al cargar la escena y luego escuchar este evento para actualizaciones.

Consultar todos los jugadores en la escena

circle-exclamation

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

El jugador reproduce una animación

circle-exclamation

Siempre que el jugador reproduce un emote (baila, aplaude, saluda, etc.), puedes detectar este evento.

El evento incluye la siguiente información:

  • expressionId: Nombre del emote realizado (p. ej.: wave, clap, kiss)

circle-exclamation

Jugador cambia el perfil

circle-exclamation

Siempre que el jugador realiza un cambio en su perfil, se llama al evento onProfileChanged . Estos cambios pueden incluir ponerse wearables diferentes, cambiar el nombre, la descripción, activar experiencias portátiles, etc.

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

Cuando se activa este evento, puedes usar entonces la getUserData() función para obtener la versión más reciente de esta información, incluida la lista de wearables que el jugador tiene puestos. Puede que necesites añadir una pequeña demora antes de llamar a getUserData() para asegurar que la versión que esta función devuelve esté actualizada.

circle-info

💡 Tip: Al probar en preview con el explorador web heredado, para evitar usar un avatar aleatorio, ejecuta la escena en el navegador conectado con tu wallet Metamask.

circle-exclamation

Escena terminó de cargar

circle-exclamation

Cuando la escena termina de cargar, se llama a onSceneReadyObservable . Esto funciona tanto si el jugador carga directamente en la escena, como si el jugador se acerca a la escena desde otro lugar. Cuando todo el contenido de la escena ha terminado su carga inicial, incluidos modelos pesados, etc., se llama a este evento.

Métodos de datos de jugador obsoletos

circle-exclamation

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

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

Puedes obtener datos de otros jugadores que estén cerca, 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 API de contenido. Ver Datos de cualquier jugador

getPlayerData() solo se puede obtener datos de jugadores que estén actualmente cerca. No tienen que estar necesariamente en la misma escena, pero sí en alcance visual, eso es porque esta información se obtiene desde el motor local que está renderizando esos avatares. Para probar esto en preview, abre una segunda pestaña e inicia sesión con una cuenta diferente.

circle-exclamation

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

Obtener tiempo del skybox

circle-exclamation

Obtener realm

circle-exclamation

Es modo preview

circle-exclamation

Jugador hace clic en otro jugador

Siempre que el jugador haga clic en otro jugador, puedes detectar un evento.

circle-exclamation
circle-exclamation

El evento incluye los siguientes datos:

  • userId: El id del jugador clicado

  • ray: Datos sobre el rayo trazado por el clic

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

    • distance: número 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 jugador que hizo el clic, relativa a la escena.

circle-info

💡 Tip: El comportamiento predeterminado de hacer clic en otro jugador es abrir el passport del jugador, donde puedes ver información adicional sobre ese jugador, agregarlo 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.

El jugador bloquea/desbloquea el cursor

circle-exclamation

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

Los jugadores desbloquean el cursor haciendo clic el Botón derecho del ratón o presionando la Esc tecla, y bloquean de nuevo el cursor haciendo clic en cualquier parte de la pantalla.

Este onPointerLockedStateChange evento se activa cada vez que un jugador cambia entre estos dos modos, mientras está cerca de la escena.

circle-exclamation

Jugador cambia de realm o isla

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

Cada vez que el jugador cambia de realm o island, se llama al evento onRealmChangedObservable .

circle-exclamation

Este evento incluye los siguientes campos:

  • serverName: string; El nombre del servidor catalyst.

  • room: string; El nombre de la isla.

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

  • domain: string; La URL del servidor catalyst en uso.

A medida que los jugadores se mueven por el mapa, pueden cambiar de isla para agruparse con aquellos jugadores que ahora están más cerca. Las islas también ajustan sus fronteras dinámicamente para acomodar un grupo manejable de personas en cada una. Así que incluso si un jugador permanece inmóvil, podría cambiar de isla a medida que otros entran y salen de las escenas circundantes.

Si tu escena depende de un servidor de terceros para sincronizar cambios entre jugadores en tiempo real, es posible que desees compartir datos solo entre jugadores que estén agrupados en el mismo realm+island, por lo que es buena práctica cambiar de sala en el servidor de terceros cada vez que los jugadores cambien de island.

Funciones cripto

circle-exclamation

Eventos de video

circle-exclamation

Cuando un video cambia su estado de reproducción, el onVideoEvent observable recibe un evento.

La entrada de un evento de video contiene las siguientes propiedades:

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

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

  • currentOffset (número): El valor actual de la propiedad seek en el video. Este valor muestra los segundos desde el inicio original del video. -1 por defecto.

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

  • videoStatus: El valor del nuevo estado del video del VideoTexture, expresado como un valor del enum VideoStatus . 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