Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
9
Help us understand the problem. What are the problem?

More than 5 years have passed since last update.

@soyliquid

OculusRift + PhotonCloudでメタバース的なものを作ってお手軽未来体験!

OculusRift + PhotonCloudでメタバース的なものを作ってお手軽未来体験!

 というコンセプトの記事です。
 (動けばいいんだよ!の精神で作っていますのでツッコミ等頂けたら喜びます)

1.PhotonCloudの使用準備

 1.PhotonCloudに登録してアプリを作成
1.png

 2.PhotonCloudのアセットをインポート
2.png

 3.設定ウィザードで使用準備
3.png

 これだけでもうPhotonCloudを使用できます。べんり!!!

2.PhotonCloudでルームを作成する

 Sceneのルートにスクリプト管理用のGameObject(以下、_Scripts)を作成します。
 次にPhotonCloudを使う為のスクリプト(以下、NetworkManager)をこんな感じで作成します。
 PhotonViewスクリプトと今作ったNetworkManagerを_Scriptsに追加します。
 4.png

 これで起動時に自動でPhotonのロビー&ルームへ接続出来ます。

3.プレイヤーを作成する

 次はプレイヤーを作成します。
 プレイヤーのアバターとしてUnityちゃんにご登場願いました。

 6.png

 FPSっぽくWASDで移動、マウスで旋回するようにします。
 但し、そのままだと他プレイヤーまで一緒に移動したり回転したりしてしまいます。
 この現象を回避する為にはphotonView.isMineでプレイヤーが自分自身かどうかを判断して、不要な処理やスクリプトが動かないようにする必要があります。
 こんな感じのスクリプトを使って制御すると便利だと思います。
 一通り作り終わったらプレイヤーをPrefab化しておきましょう。

4.プレイヤーを同期する

 そのままだとプレイヤーの位置も動作も同期されません。なんとかしましょう。
 プレイヤーに同期処理用のスクリプトを仕込み、PhotonViewのObserve値で参照させます。
 同期処理用スクリプトはこんな感じで実装しました。
 SyncTargetsの要素に同期させたいGameObjectを仕込みます。
 Transformの位置と回転、Animatorのパラメータが同期されます。
 (多分この方法は通信負荷が高いので移動キーの入力をRPCで伝達して各自ローカルで移動処理をしつつ低頻度で誤差修正用の位置同期処理を走らせるのがいいんじゃないでしょうか。どうでしょうか)

5.OVRCameraRigを仕込む

 Hierarcyのルート直下にOVRCameraRigを配置しておきます。
 これを自プレイヤー検出時にプレイヤーの視点の位置に持っていきます。
 基本的にこれだけでOKです。
 今回はアニメーション時もカメラの位置を追従させたいので、Character1_Headに位置を合わせるようにしました。

 7.png

6.イベントを実装する

 普通に音を鳴らしたりしても自分にしか聞こえないので、RPCを使って他クライアントにイベントを伝達します。
 RPCAttributeを付与したメソッドをこんな感じで呼んであげましょう。
 今回はRPCを使って足音を鳴らしています。 

7.動かしてみる

 最終的にアニメーションやらHeadLookControllerやら移動方向を向くスクリプトやらを仕込んでこんな形になりました。

 5.png

 これをビルドして複数クライアントで動かしてみましょう。
 そこには元気に動き回るユニティちゃんズの姿が!!!!

7.png

 実行ファイルはここからダウンロードできます。

8.お わ り

 やっていることは単にプレイヤーのアバターの目の位置にOVRCameraRigを仕込んだだけですが、それなりに雰囲気でていると思います。
 視界の中心に一番近いプレイヤーの顔に視線を向けるとかするともっとそれっぽくなりそうですね。

 次の担当はkurisaka_konabeさんのOculus Riftで小動物になる展示です。よろしくお願いします!

9.ライセンス表記

 このコンテンツはユニティちゃんライセンスで提供されています。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
9
Help us understand the problem. What are the problem?