仮想と物理とエトセトラ

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

Photon(PUN2)での簡単な共有(ユーザ位置の共有)

今回は下記の続きで、入室したユーザ位置共有の手順のメモです。

xr-physics-work-etc.hatenablog.com

前回の設定で、入室時に「Player」オブジェクトを生成し入室したことはわかりましたが、ユーザ位置に追従していません。
今回は、各ユーザの頭の位置に「Player」オブジェクトを配置し、どこにいるか、動いているかを共有します。

「Player」プレハブの設定

それぞれのプレイヤーの位置を共有するために、「Player」プレハブに設定をします。
前回アタッチした「PhotonView.cs」ではPhotonでの共有対象に設定をしました。

f:id:napo909:20210411125746p:plain
追加で「PhotonTransformView.cs」をアタッチします。
このコンポーネントでTransformの共有ができます。
今回はユーザの位置、姿勢を共有したいので、Positon, Rotationのみチェックします。
また、相対位置を共有したいので「Use Local」にチェックを入れます。

次にオブジェクトをユーザの頭の位置に調整するようにします。
その際、自分で生成したオブジェクトのみ操作するため、「PhotonUser.cs」を作成します。

  • PhotonUser.cs

1人目のユーザが入室した後、2人目のユーザが入室すると、1人目と2人目の「Player」オブジェクトが生成されるため、 自分のオブジェクトか判断して操作する必要があります。
自分のオブジェクトの場合のみPhotonView.IsMineがTrueとなるので、操作対象を限定できます。
また、基準点の子オブジェクトへの設定は、Start()時に自他両方のオブジェクトで行わないと基準点からの相対位置で管理できません。

f:id:napo909:20210411174905p:plain
PhotonUser.csを「Player」プレハブに設定します。
今回追加したスクリプトは上の2つです。

f:id:napo909:20210411174435p:plain
動作確認のため、ビルドを行います。
ビルドの前に「Build Settings」→「Player Settings」→「Player」→「Publishing Settings」→「Capabilities」から下記にチェックを付けます。
Hololens2からPhoton Cloudに接続するために必要です。

  • InternetClientServer
  • PrivateNetworkClientServer

設定したらビルドしHololens2にアプリを入れます。

f:id:napo909:20210411185124g:plain
UnityEditorからHololens2側の動きを見た結果がこちらです。
頭の動きに合わせてボールが動いているのがわかります。
Hoholens2からもUnityEditor側のユーザを示すボールが見えています。

これでユーザ位置の共有ができました。
次回は一方で物体を操作し、もう一方でその動きを確認します。