この記事は Unity Assets Advent Calendar 2015 4日目の記事になります。
OculusRiftでオンライン。前回はPhotonを使ってOVRPlayerControllerの連携まで実装しました。
Oculus Rift対応のソーシャルVRを作る その1 Photon
今回はボイスチャット機能を追加していきます。
DFVoice – Voice chat (VoIP) solution
https://www.assetstore.unity3d.com/jp/#!/content/19344
開発環境
- Unity 5.2.1p2
- Oculus Runtime 0.7
元ネタ
OVRPlayerControllerオンラインにボイスチャット機能を追加
>> CONVRGE – How to add voice chat to Unity in under 15 minutes using DFVoice
http://www.convrge.co/add-voice-chat-to-unity-using-dfvoice
前回のPhotonでOVRPlayerControllerオンラインを作るチュートリアルから、DFVoiceを使いボイスチャット機能を追加するチュートリアル。
開発
2:06 MyLocalVoiceController.csスクリプトの作成。
あらかじめ用意しておいたコードを張り付け 2:30
内容としては、IsLocalはシーンにあるPhotonViewがアタッチされているプレハブがどこのPCの所有者のものかの判定。
OnAudioDataEncodedはマイクに喋った音声データを取得するコールバック。次のRPCのvcメソッドを呼んで他のPCのAudioSourceに音声データを配布している。
vcはRPC、りもーと ぷろしーじゃー こーる。他のPCのメソッドを呼べるもの。
OnAudioDataEncodedで呼ばれている通り、他のPCがしゃべったら自分のPCのvcが呼ばれてAudioSourceが喋り出す。
isTalkingは喋っているかの判定
5:25 作ったMyLocalVoiceController.csスクリプトをNetworkedPlayerプレハブにアタッチ。PhotonViewのコンポーネントをドラッグで設定しておく。
5:51 声を再生するAudioSourceコンポーネントをNetworkedPlayerプレハブにアタッチ。3Dサウンドに対応するためSpatial Blendを0から1へ
7:03 UnityAudioPlayer.csスクリプトをNetworkedPlayerプレハブにアタッチ。実際はこのDFVoiceのUnityAudioPlayer.csスクリプトが音声データのバッファーリングや再生などを行う。
こちらのIsThreeDimensionalをONにして3Dサウンドに対応させておく。
7:34 一度、音声データをネットワークでやり取りして喋れる段階までできたところでシーンを実行して確認してみる。
しかしエラー。後は自分がマイクに向けて喋った入力、PCのオーディオ入力を受け取るための実装が必要。
7:57 マイクからのオーディオ入力をUnityのプログラムで取得する。
MicrophoneInputDevice.csスクリプトをNetworkedPlayerプレハブにアタッチ。
喋る時に押すボタン、Push To TalkにSpaceを設定
完成したNetworkedPlayerプレハブ
※赤枠はコンポーネントを張り付けた後に内容を編集した項目。
9:23 ビルドで確認。しかしエラー。
Api Compatibility Levelを .NET2.0 Subsetから.NET 2.0へ
以上の手順で基礎となるソーシャルVRの基盤が完成。
あとはAvatarとして使っているCubeを差し替えたり、Photonでやり取りするデータを増やしたり、プレイヤー名を設定したり色々カスタマイズしていきましょう。