仮想と物理とエトセトラ

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

Photon(PUN2)での簡単な共有(ルームへの入室まで)

今回は下記の続きで、共有までの手順のメモです。

xr-physics-work-etc.hatenablog.com

今回は、実際にPhoton Cloudと通信し、ルームを作成、ユーザオブジェクトを作成するまでを行います。

Unity上でのMRTK側の設定はあちこちで解説されているので省略。
最新は下記を参考に。

docs.microsoft.com

Photon Cloudとの通信部品の作成

f:id:napo909:20210410180233p:plain
Hierarchyで右クリックをして「Create Empty」を選択すると、Hierarchyに「GameObject」が追加される。
追加した「GameObject」の名前を「PhotonManager」に変更する。
このオブジェクトでPhoton Cloudへの接続を管理する。

f:id:napo909:20210410181013p:plain
次に通信用のスクリプトを作成する。
Project上で右クリックをして「Create」→「C# Script」を選択する。
作成したスクリプト名を「PhotonManager」にする。
スクリプトの内容は以下の通り。

PhotonManager.cs

今回はある基準点からの相対位置を共有するため、共有基準点の子オブジェクトにスポーンしたユーザを設定した。

f:id:napo909:20210410191925p:plain

これを「PhotonManager」のオブジェクトにアタッチする。
SharingBaseTransformには、共有するための基準点となるオブジェクトを設定する。
今回は基準点として、空オブジェクトの「SharingBase」を作成し、子オブジェクトにMRTKに含まれる「HandJointGizmo」を用いた。
※各軸がわかりやすいため。

f:id:napo909:20210410191935p:plain
PhotonNetwork.Instantiateで生成するプレハブは、Asset/Resources配下である必要がある。
ユーザ用プレハブを作成するため、Hierarchy上で「3D Object」→「Sphere」を選択して球体を生成する。
オブジェクト名を「Player」に変更する。
※サイズ感は画像を参考。materialはMRTKのstarndardシェーダを選択したほうが見やすいです。

f:id:napo909:20210410191942p:plain
作成したオブジェクトに「PhotonView.cs」をアタッチした後、Hierarchy上の「Player」オブジェクトをAsset/Resourcesにドラッグする。
Hierarchy上の「Player」プレハブは削除する。
Asset/Resources上の「Player」プレハブを「PhotonManager」のUserPrefabにアタッチする。

f:id:napo909:20210410191945p:plain
UnityEditor上で実行すると、PhotonCloudに接続でき、「Player」オブジェクトが「SharingBase」配下に生成されることを確認できる。

以上でルームへの入室は完了です。
現在「Player」オブジェクトは「Photon View」以外に設定していないため、プレイヤー位置に追従しません。
次回「Player」オブジェクトをそれぞれのPlayerに追従するように設定します。

PhotonのAPIに関する情報は後日まとめる予定。

※時間かかった割にあまり分量がない。。。?

一部参考:

junyablog.site