Photon(PUN2)での物体位置の共有
今回は下記の続きで、表示した物体位置の共有です。
xr-physics-work-etc.hatenablog.com
基本的にはユーザ位置共有と同じですが、多用する機能のため記載しておきます。
1. Spawnするプレハブを用意する
まずは共有する物体をプレハブとして用意します。
今回はUnity標準のCubeを対象とします。
Hierarchy上で右クリックし、「3D Object」→「Cube」を選択します。
生成したオブジェクトのサイズや、マテリアルを調整し、以下のスクリプトをアタッチします。
- Object Manipulator (Near Interaction Grabbableをボタンから追加する)
- Photon View
- Photon Transform View (Scaleにチェックを追加する)
Assets/ResourcesディレクトリにCubeオブジェクトをドラッグ&ドロップし、プレハブを作成します。
プレハブを作成したら、Hierarchy上からはCubeオブジェクトを削除します。
2. Spawn用のボタンを用意する
次にSpawnのトリガーとするボタンを用意します。
MRTK Toolboxから使用するボタンを選びクリックします。
クリックすると、Hierarchy上にプレハブが配置されます。
次に、Photonでオブジェクトを生成するためのスクリプトを作成し、ボタンにアタッチします。
ボタンはz方向に移動しておきましょう。
アタッチしたスクリプトの「Spawn Target Object」に先ほど作成したCubeプレハブを設定し、「Interactable」の「OnClick」に「PhotonSpawner」 -> 「SpawnPrefab」を設定します。
- PhotonSpawner.cs
3. 動作確認
Hololens 2 - Unity Editor間で動作確認をします。(視点はUnity Editor側)
Hololens2側でボタンを押し、物体をspawn、操作できています。
しかし、このままでは物体をspawnした人しか操作できません。
もう一方の人が操作してもほかの人に動きは共有されず、徐々に元の位置に戻ってしまいます。
物体共有
— napo tech (@SubNapo) 2021年5月1日
普通にSpawnするだけではSpawnした人しか触れない pic.twitter.com/TQTIEN2kOs
これを解決するには「操作権限」を取得する必要があります。
次回はこの「操作権限」を扱う方法と記載する予定です。