Funções Depreciadas

Funções legadas

As seguintes funções são todas legadas e devem ser evitadas. Elas ainda funcionam, mas no futuro podem deixar de ser suportadas. Todos estes exemplos incluem links para formas alternativas de obter a mesma informação ou alcançar os mesmos resultados.

Jogador entra ou sai da cena

circle-exclamation

Sempre que um avatar entra ou sai dos terrenos que compõem sua cena, ou teleporta para dentro ou fora, isso cria um evento ao qual você pode escutar. Este evento é acionado por todos os avatares, incluindo o do jogador.

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

Os observables onEnterScene e onLeaveScene importados de '@dcl/sdk/observables' também estão obsoletos. As funções corretas têm o mesmo nome, mas são importadas de '@dcl/sdk/src/players' em vez disso. No exemplo abaixo você pode ver ambas as variações, primeiro a versão obsoleta, depois a correta.

Jogador conecta ou desconecta

circle-exclamation

Obtenha a lista completa de jogadores atualmente conectados de getConnectedPlayers.

Sempre que outro jogador começa ou deixa de ser renderizado pelo motor local, isso cria um evento ao qual você pode escutar. Jogadores podem ou não estar na mesma cena que você, mas devem estar dentro do alcance visual (não necessariamente à vista). O onPlayerConnectedObservable detecta tanto quando um jogador se conecta recentemente nas proximidades quanto quando fica suficientemente próximo para estar no alcance visual, da mesma forma o onPlayerDisconnectedObservable detecta quando um jogador termina sua sessão ou se afasta.

Tenha em mente que se outros jogadores já estão sendo renderizados nos arredores antes que o jogador tenha carregado sua cena, este evento não notificará a cena recém-carregada sobre os jogadores já existentes. Se você precisa acompanhar todos os jogadores atuais, você pode consultar os jogadores existentes ao carregar a cena e então escutar este evento para atualizações.

Consulta todos os jogadores na cena

circle-exclamation

Você também pode obter a lista completa de jogadores que estão atualmente na sua cena e sendo renderizados chamando getPlayersInScene().

Jogador executa animação

circle-exclamation

Sempre que o jogador executar um emote (dança, palmas, aceno, etc), você pode detectar este evento.

O evento inclui as seguintes informações:

  • expressionId: Nome do emote executado (por exemplo: wave, clap, kiss)

circle-exclamation

Jogador altera perfil

circle-exclamation

Sempre que o jogador faz uma alteração em seu perfil, o onProfileChanged evento é chamado. Essas mudanças podem incluir vestir wearables diferentes, alterar nome, descrição, ativar experiências portáteis, etc.

Os dados do evento incluem apenas o ID do jogador e um número de versão para o perfil desse avatar, de acordo com o servidor catalyst. Toda vez que uma mudança é propagada, o número da versão aumenta em 1.

Quando este evento é acionado, você pode então usar o getUserData() função para buscar a versão mais recente dessa informação, incluindo a lista de wearables que o jogador está usando. Pode ser necessário adicionar um pequeno atraso antes de chamar getUserData() para garantir que a versão retornada por essa função esteja atualizada.

circle-info

💡 Tip: Ao testar em preview com o web explorer legado, para evitar usar um avatar aleatório, execute a cena no navegador conectado com sua carteira Metamask.

circle-exclamation

Cena terminou de carregar

circle-exclamation

Quando a cena termina de carregar, o onSceneReadyObservable é chamado. Isso funciona tanto se o jogador carregar diretamente na cena, quanto se o jogador se aproximar da cena vindo de outro lugar. Quando todo o conteúdo da cena terminou seu carregamento inicial, incluindo modelos pesados, etc., este evento é chamado.

Métodos de dados de jogador obsoletos

circle-exclamation

Para obter informações do jogador atual que está executando a cena, use getUserData().

O exemplo abaixo importa o namespace ~system/UserIdentity e executa getUserData().

Você pode obter dados de outros jogadores que estão próximos, chamando getPlayerData(), passando o id de uma conta Decentraland.

Ambos getUserData() e getPlayerData() retornam a mesma estrutura de dados disponível via a content API. Veja Dados de qualquer jogador

getPlayerData() só podem buscar dados de jogadores que estão atualmente próximos. Eles não precisam necessariamente estar na mesma cena, mas no alcance visual, isso porque essa informação é buscada do motor local que está renderizando esses avatares. Para testar isso em preview, abra uma segunda aba e faça login com uma conta diferente.

circle-exclamation

O getUserPublicKey() e getUserAccount() funções também estão obsoletas. Por favor, use getPlayer() em vez disso. Veja Dados do usuário.

Obter hora do skybox

circle-exclamation

Obter realm

circle-exclamation

Está em modo preview

circle-exclamation

Jogador clica em outro jogador

Sempre que o jogador clica em outro jogador, você pode detectar um evento.

circle-exclamation
circle-exclamation

O evento inclui os seguintes dados:

  • userId: O id do jogador clicado

  • ray: Dados sobre o raio traçado pelo clique

    • campo: espera um Um Vector3 normalizado que representa a direção do ponto de origem do clique até o ponto de impacto do clique.

    • distance: maxDistance A distância em metros do ponto de origem até o ponto de impacto.

    • origin: espera um O ponto de origem do clique, a posição do jogador que fez o clique, relativa à cena.

circle-info

💡 Tip: O comportamento padrão de clicar em outro jogador é abrir o passaporte do jogador, onde você pode ver informações adicionais sobre esse jogador, adicioná‑lo como amigo, etc. Você pode desabilitar a abertura dessa UI para que ela não atrapalhe a experiência que você quer construir adicionando uma Avatar Modifier Area.

Jogador trava/destrava cursor

circle-exclamation

Jogadores podem alternar entre dois modos de cursor: cursor travado modo para controlar a câmera ou cursor destravado modo para mover o cursor livremente sobre a UI.

Jogadores destravam o cursor clicando o Botão direito do mouse ou pressionando a tecla Esc e travam o cursor de volta clicando em qualquer lugar na tela.

Este onPointerLockedStateChange evento é ativado cada vez que um jogador alterna entre esses dois modos, enquanto perto da cena.

circle-exclamation

Jogador muda de realm ou ilha

Jogadores na Decentraland existem em realms, e em islands separadas dentro de cada realm. Jogadores em realms ou islands diferentes não conseguem se ver, interagir ou conversar entre si, mesmo se estiverem nos mesmos terrenos.

Cada vez que o jogador muda de realm ou island, o onRealmChangedObservable evento é chamado.

circle-exclamation

Este evento inclui os seguintes campos:

  • serverName: string; O nome do servidor catalyst.

  • room: string; O nome da island.

  • displayName: string; O nome do servidor catalyst seguido de um - e o nome da island. Por exemplo unicorn-x011.

  • domain: string; A URL do servidor catalyst sendo usado.

Conforme os jogadores se movem pelo mapa, eles podem trocar de island para serem agrupados com aqueles jogadores que estão agora mais próximos. As islands também ajustam seus limites dinamicamente para encaixar um grupo manejável de pessoas em cada uma. Então mesmo que um jogador fique parado, ele pode ser trocado de island conforme outros entram e saem das cenas ao redor.

Se sua cena depende de um servidor de terceiros para sincronizar mudanças entre jogadores em tempo real, então você pode querer compartilhar dados apenas entre jogadores que estão agrupados em um mesmo realm+island, por isso é uma boa prática trocar de sala no servidor de terceiros sempre que os jogadores mudarem de island.

Funções de cripto

circle-exclamation

Eventos de vídeo

circle-exclamation

Quando um vídeo muda seu estado de reprodução, o onVideoEvent observable recebe um evento.

A entrada de um evento de vídeo contém as seguintes propriedades:

  • videoClipId ( string): O ID da entidade que mudou de estado.

  • componentId (string): O ID da entidade que mudou de estado.

  • currentOffset (maxDistance): O valor atual da propriedade seek . Esta propriedade mostra segundos após o começo original do vídeo. -1 por padrão.

  • totalVideoLength (maxDistance ): O comprimento em segundos de todo o vídeo. -1 se o comprimento for desconhecido.

  • videoStatus: O valor para o novo status do vídeo do VideoTexture, expresso como um valor do enum VideoStatus . Este enum pode conter os seguintes valores possíveis:

  • VideoStatus.NONE = 0,

  • VideoStatus.ERROR = 1,

  • VideoStatus.LOADING = 2,

  • VideoStatus.READY = 3,

  • VideoStatus.PLAYING = 4,

  • VideoStatus.BUFFERING = 5

Atualizado