【Unity】【OculusQuest】イライラ棒を作る
イライラ棒を作った時の苦労話をツラツラと書いていきたいと思います。
結構苦労したんですよ、本当に。
開発環境
- Unity 2019.1.2
- Oculus Integration 1.39
- Visual Studio 2017
OVRPlayerControllerを使う
Oculus Integrationをインポートすると、膨大な量のサンプルシーンやPrefabがインストールされます。今回はその中から、OVRPlayerControllerを使用しました。
Assets > Occulus > VR > Prefabs に入っています。
OVRPlayerControllerにはCharacterControllerがアタッチされているので、スクリプトを組むことなくVR空間内を自由に移動することができます。
これにはOVRCamerRigがアタッチされていますので、通常のCameraがシーン内にある場合は削除しましょう。
AvatarGrabberRightを使う
今回は右手でイライラ棒を操作するので、AvatarGrabberRightを使用します。
Assets > Occulus > SampleFramework > Core > AvatarGrab > Prefabs に入っています。
なぜこれを使ったかというと、最初は手のアバターを表示してイライラ棒を掴んで操作しようと思っていたからです。
ですがBEAT SABERを思い出してみたら、手のアバターは表示されていないんですよね。という訳で、その名残というのが理由ですw
コントローラの位置や角度が取得できれば、他でも良いと思います。
なお、AvaterGrabberRightはOVRameraRigの子オブジェクトとして設定します。
OVRPlayerControllerでUser Profile Dataを使用する設定にしていると、こうしないと手の位置が正しく表示されませんでした。
イライラ棒を作る
柄の部分を中心位置としたいので、柄(Cube)の子オブジェクトとして刃(Cylinder)をくっつけました。
イライラ棒を引っこ抜けないように(引っこ抜いたらビリビリさせる)、刃の前後にもコライダをくっつけました。
最初は透明にしていたのですが、透明だとビリビリしたときに「なんで!?」となってしまったので、すこーしだけ見えるようにしてみました。
が、なんだか余計に見えづらくなってしまったという・・・(汗)
動かしてみる
これでイライラ棒が出来上がりました!
なお、イライラ棒ですので失敗すると当然のごとくビリビリしますw
OVRInput.SetControllerVibrationメソッドを使用すると、コントローラをビリビリさせることができます。
ビリビリのエフェクトは、勉強中のUnityゲームエフェクト入門で作ったやつをそのまま使ってしまいましたw
結論
- OVRPlayerControllerを使うと、VR空間内を自由に移動できる
- AvatarGrabberRightを使うと、コントローラの位置を取得できる
- コントローラをビリビリさせるには、OVRInput.SetControllerVibrationメソッドを使う
- イライラ棒すっぽ抜け防止のアイディアが最悪。もっと良い案モトム。
↑↑↑ ぜひ遊んでみてください!↑↑↑