こんにちは、料理長です。
今回はVRを使ってコントローラーではなく目で選択できる機能を作りました。
目で選択できる機能は、Windows MRのチュートリアルにもあって、目の前にあるボタンを見て一定の秒数を経ったら「押した」判定になります。
調べた結果は、意外と参考できる文献は少ない、5年前の動画とスレを参考しました。
どうやってできるか考えにくい、動画を見たらシンプルでした。
これは、頭にさらにカメラを載せて、そこからRaycastだけ飛ばして当たり判定を付けることです。
まずは設定しましょう。
OVR PlayerControllerなどのものを導入できたら、まずは CenterEyeAnchorの下にカメラを追加して、名前をLook Cameraにします。
Transformの方は必ずリセットして0にします。そうしないとずれが発生してしまいます。
Clear Flagsを Dont'Clearで、Culling Maskを Nothing、今必要のはそのカメラから出るRayだけで、「見る」ことができてしまうと処理が重くなります。
Target Eye は None(Main Display)にします。
Look CameraのしたにCanvasを追加して、ターゲット的な画像を入れて当たる位置をわかりやすくします。
シーンに検証用のパネルとボタンと球体を動画の通りで置きます。
ボタンのHighlighted Colorに色を付けます。
参考用のスレから BasicLookInputModuleのスクリプトをコピーして、EventSystemに付けて、他のStandaloneなどのInput Moduleは要らないので無効にします。このモジュールがなければUIに反応しません。
ボタン自身にbutonHoverのスクリプトを入れて、Event Triggerも入れて、 Pointer Enter と Pointer Exitをそれぞれ追加して MouseOver() と MouseOut()をアサインします。
プレイボタンを押して動作確認します。
ずれたと思ったらターゲットを調整しましょう。
正常に動作できれば、ボタンを見たら色が変わり、Consoleにカウントダウンが始まり、0になったら球体がボタンの位置まで飛ばします。
できました!
これで、VRコンテンツ開発にできることが増えます!
さらに、普通のFPSみたいにオブジェクトに当たるスクリプトを作れば、UIボタン以外も幅広く使えます!
今度は、この機能を活かしたゲームを作りたいと思います!
参考資料:
Look Selection with Oculus VR and Unity
New Unity UI + OVR Look-Based Input HOWTO
https://forums.oculusvr.com/t5/Unity-Development/New-Unity-UI-OVR-Look-Based-Input-HOWTO/td-p/253590









コメント
コメントを投稿