Funciones obsoletas

Funciones heredadas

Las siguientes funciones son todas 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.

Jugador entra o sale de la escena

circle-exclamation

Siempre que un avatar entre o salga de los parceles de tierra que componen tu escena, o se teletransporte dentro o fuera, esto 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 a continuación puedes ver ambas variaciones, primero la versión obsoleta y luego la correcta.

// DEPRECATED - imported from observables
import { onEnterScene, onLeaveScene } from '@dcl/sdk/observables'

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

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

// CURRENT - imported as a player function
import { onEnterScene, onLeaveScene } from '@dcl/sdk/src/players'

export function main() {
	onEnterScene((player) => {
		if (!player) return
		console.log('ENTERED SCENE', player)
	})

	onLeaveScene((userId) => {
		if (!userId) return
		console.log('LEFT SCENE', userId)
	})
}

Jugador se conecta o desconecta

circle-exclamation

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

Siempre que otro jugador empiece o deje de ser renderizado por el motor local, esto crea un evento al que puedes suscribir. Los jugadores pueden o no estar en la misma escena que tú, pero deben estar dentro del rango visual (no necesariamente a la vista). El onPlayerConnectedObservable detecta tanto cuando un jugador se conecta cercano por primera vez como cuando se acerca lo suficiente para estar en el rango visual, de igual forma el onPlayerDisconnectedObservable detecta cuando un jugador termina su sesión o se aleja mucho.

Ten en cuenta que si otros jugadores ya se están renderizando en los alrededores antes de que el jugador haya cargado tu escena, este evento no notificará a la escena recién cargada sobre los jugadores ya existentes. Si necesitas llevar un seguimiento 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 están actualmente en tu escena y siendo renderizados llamando a getPlayersInScene().

Jugador reproduce animación

circle-exclamation

Siempre que el jugador reproduzca un emote (bailar, aplaudir, saludar, 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 haga un cambio en su perfil, se llama al evento onProfileChanged . Estos cambios pueden incluir ponerse wearables distintos, 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 la función getUserData() 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 un pequeño retraso antes de llamar a getUserData() para asegurarte de que la versión que devuelve esta función esté actualizada.

circle-info

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

circle-exclamation

Escena terminó de cargar

circle-exclamation

Cuando la escena termina de cargarse, 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 de abajo importa el namespace ~system/UserIdentity y ejecuta getUserData().

Puedes obtener datos de otros jugadores que estén cerca llamando a getPlayerData(), pasando el id de una cuenta de Decentraland.

Ambos getUserData() y getPlayerData() devuelven la misma estructura de datos disponible a través de la content API. Ver Datos de cualquier jugador

getPlayerData() solo pueden obtener datos de jugadores que estén actualmente cerca. No tienen que estar necesariamente en la misma escena, pero sí en rango visual, porque esta información se obtiene del motor local que está renderizando estos 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 de usuario.

Obtener skybox time

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

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

circle-info

💡 Consejo: El comportamiento por defecto al hacer clic en otro jugador es abrir el pasaporte 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 quieras construir añadiendo un Avatar Modifier Area.

Jugador bloquea/desbloquea cursor

circle-exclamation

Los jugadores pueden alternar entre dos modos de cursor: modo cursor bloqueado para controlar la cámara o modo 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 tecla Esc , y bloquean el cursor de nuevo haciendo clic en cualquier lugar 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 diferentes realms, y en diferentes islands dentro de cada realm. Los jugadores en diferentes realms o islands no pueden verse, interactuar o chatear entre sí, incluso si están en los mismos parceles.

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 que se está usando.

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 de ellos. Las islas también ajustan dinámicamente sus fronteras para encajar un grupo manejable de personas en cada una. Por lo tanto, incluso si un jugador permanece quieto, 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, entonces podría interesarte 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 observable recibe un evento. onVideoEvent onVideoEvent.add((data) => {

videoClipId

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

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

  • ): El valor actual de la propiedad (numberseek en el video. Este valor muestra segundos desde el inicio original del video. por defecto. -1 totalVideoLength

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

  • : El valor del nuevo estado del video delVideoTexture , expresado como un valor del enumVideoStatus . Este enum puede contener los siguientes valores posibles: VideoStatus.NONE

  • VideoStatus.ERROR = 0,

  • VideoStatus.LOADING = 1,

  • VideoStatus.READY = 2,

  • VideoStatus.PLAYING = 3,

  • VideoStatus.BUFFERING = 4,

  • VideoStatus.PLAYING = 5

Última actualización