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

events

import { Vrm } from "@hmcs/sdk";

vrm.events() はキャラクターの Server-Sent Events(SSE)ストリームに接続された VrmEventSource を返します。

const character = await Vrm.findByName("MyAvatar");
const eventSource = character.events();

イベントリスナーを登録するには VrmEventSource.on を使用し、接続を閉じるには VrmEventSource.close を使用します。

VrmEventSource は TypeScript の using 宣言で使用するための Disposable プロトコルを実装しています:

{
using eventSource = character.events();
eventSource.on("state-change", (e) => {
console.log("State:", e.state);
});
// このブロックの終わりで eventSource は自動的に閉じられます
}

利用可能なイベント

イベントペイロード説明
state-change{ state: string }キャラクターの状態が変更(idle、drag、sitting など)
expression-change{ state: string }表情が変更
vrma-play{ state: string }VRMA アニメーションの再生開始
vrma-finish{ state: string }VRMA アニメーションの完了
pointer-click{ globalViewport, button }キャラクターがクリックされた
pointer-press{ globalViewport, button }キャラクター上でマウスボタンが押された
pointer-release{ globalViewport, button }キャラクター上でマウスボタンが離された
pointer-over{ globalViewport }マウスがキャラクター領域に入った
pointer-out{ globalViewport }マウスがキャラクター領域を離れた
pointer-move{ globalViewport }キャラクター領域内でマウスが移動した
pointer-cancel{ globalViewport }ポインタインタラクションがキャンセルされた
drag-start{ globalViewport }ドラッグ開始
drag{ globalViewport, delta }ドラッグ中(カーソルの差分を含む)
drag-end{ globalViewport }ドラッグ終了
persona-change{ persona }ペルソナデータが更新された