仮想と物理とエトセトラ

xRや物理とかごった煮の備忘録的技術ブログ

Photon(PUN2)での物体位置の共有

今回は下記の続きで、表示した物体位置の共有です。

xr-physics-work-etc.hatenablog.com

基本的にはユーザ位置共有と同じですが、多用する機能のため記載しておきます。

1. Spawnするプレハブを用意する

まずは共有する物体をプレハブとして用意します。
今回はUnity標準のCubeを対象とします。
Hierarchy上で右クリックし、「3D Object」→「Cube」を選択します。
f:id:napo909:20210501134951p:plain

生成したオブジェクトのサイズや、マテリアルを調整し、以下のスクリプトをアタッチします。

  • Object Manipulator (Near Interaction Grabbableをボタンから追加する)
  • Photon View
  • Photon Transform View (Scaleにチェックを追加する)

f:id:napo909:20210501135725p:plain Assets/ResourcesディレクトリにCubeオブジェクトをドラッグ&ドロップし、プレハブを作成します。
プレハブを作成したら、Hierarchy上からはCubeオブジェクトを削除します。

f:id:napo909:20210501140309p:plain

2. Spawn用のボタンを用意する

次にSpawnのトリガーとするボタンを用意します。
MRTK Toolboxから使用するボタンを選びクリックします。
クリックすると、Hierarchy上にプレハブが配置されます。

f:id:napo909:20210501140615p:plain

次に、Photonでオブジェクトを生成するためのスクリプトを作成し、ボタンにアタッチします。
ボタンはz方向に移動しておきましょう。
アタッチしたスクリプトの「Spawn Target Object」に先ほど作成したCubeプレハブを設定し、「Interactable」の「OnClick」に「PhotonSpawner」 -> 「SpawnPrefab」を設定します。

  • PhotonSpawner.cs

f:id:napo909:20210501142623p:plain

3. 動作確認

Hololens 2 - Unity Editor間で動作確認をします。(視点はUnity Editor側)

Hololens2側でボタンを押し、物体をspawn、操作できています。
しかし、このままでは物体をspawnした人しか操作できません。
もう一方の人が操作してもほかの人に動きは共有されず、徐々に元の位置に戻ってしまいます。

これを解決するには「操作権限」を取得する必要があります。
次回はこの「操作権限」を扱う方法と記載する予定です。