ユーザーとアバター
自分の情報を取得する
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を使います。