メインコンテンツまでスキップ

ユーザーとアバター

自分の情報を取得する

import { getId, getProfile } from "@urth/metatell-sdk/user";

const userId = getId();
const profile = getProfile();
console.log(userId, profile?.displayName, profile?.avatarId, profile?.roles);

ホストの準備が終わっていない場合、getId()getProfile()undefinedを返します。 戻り値を利用する前に確認してください。

プロフィール変更はonProfileUpdate()で購読できます。

import { onProfileUpdate } from "@urth/metatell-sdk/user";

const unsubscribe = onProfileUpdate((profile) => {
console.log(profile.displayName);
});

アバターを変更する

import { changeAvatar } from "@urth/metatell-sdk/user";

changeAvatar("your-avatar-id");

ルートエントリのuser.changeAvatar()も同じ操作を提供します。

移動を制限する

import { setMovementEnabled } from "@urth/metatell-sdk/user";

setMovementEnabled(false);

// プラグインを閉じるときに復元する
setMovementEnabled(true);

この設定は自動で元に戻りません。 プラグインの終了処理で必ずsetMovementEnabled(true)を呼んでください。

falseにするとWASDやジョイスティックによる平行移動を停止します。 スナップ回転、Way Pointへのワープ、Flyは停止しません。

自分のTransformを監視する

import { Avatar } from "@urth/metatell-sdk";

const avatar = new Avatar();
avatar.onUpdateTransform = (transform) => {
console.log(transform.position);
console.log(transform.rotation);
console.log(transform.quaternion);
};

コールバックは高頻度で実行されるため、重い処理を避けてください。

他のユーザーを取得する

import {
list,
get,
onJoin,
onLeave,
onUpdate,
onSpeaking,
onTransform,
} from "@urth/metatell-sdk/users";

const users = list();
const user = get("session-id");

const unsubscribers = [
onJoin((joined) => console.log(joined.profile.displayName)),
onLeave(({ sessionId }) => console.log(sessionId)),
onUpdate((updated) => console.log(updated.profile)),
onSpeaking((event) => console.log(event.speaking, event.level)),
onTransform((event) => console.log(event.transform)),
];

list()は現在のスナップショットを配列で返します。 他ユーザーのキーには、ルーム接続中のsessionIdを使います。