Unityでメタバースに機能追加(9) TimerCube Step9 オーナーでもゲストでもCubeにぶつかったら同じように処理されるようにしてみた【完成】

目標 アバターがぶつかってから10秒経過したら花火が開いてCubeが消える「Time Cube」をPrefab化し、7個積み上げて積み木崩し的に使いたい。

オーナー(このスペースの所有者)でもCubeにぶつかった時の処理(黄色にする、非表示にする)がされましたが、ゲストがぶつかると非表示化の処理がされませんでした。これが正常に処理されるように修正しました。

TimerCubeのVisual Scriptを修正しました。

後で参加したとき、Cubeの状態(黄色、非表示)を反映させる
Tiggerのカスタムイベントが発生したら、オーナーシップを引き継ぎ、トリガー処理を開始、タイマーをセットする
トリガー処理が開始したら、Cubeを黄色にする

ここの処理が間違っていました。「is Space Owner」は「このスペースの所有者(作成者)か?」を調べるもので、このCubeのオーナーシップの持ち主かどうかではありませんでした。

このCubeのオーナーシップの持ち主かどうかを確認するには、「Get Owner of Synced Object」と「Get Local Actor」を比べて同じかどうかで判断します。

フレームごとに確認:Cubeにぶつかったのが自分だったのであればタイマー処理を行う

タイマー時間が経過したら、タイマーを止めて、花火を再生し、Cubeを非表示にする

2体のアバターを使用するため、テスト用のSandboxではなく、Publishingします。(Sanboxであっても、同じアバターであれば2体使えるのですが、表示がおかしかったので止めました。)

右がオーナー、左がゲストです。ゲストが先に入ってCubeを1個非表示にしてから(画面では6個並んでいる)、オーナーが入りました。
オーナー画面ではちゃんと6個並んでいます。
それぞれのアバターがCubeにぶつかると両方で黄色、非表示化の処理がされています。

最後に右側のオーナーが再読み込みで最初からで入り直しても、Cubeは現在の状態(ゼロ個)になっています。

2体のアバターでは問題なく動くことが確認できました。もう少し参加するアバターを増やしてテストしないとですね。

とりあえず、完成、完了といたします。

公開先はこちらです。Cubeを増やして12個積み上げています。

こちらのQRコードでもアクセスできます

コメントする