【Unity/VR】UI操作時にレーザーを表示したい…だけど常に表示されるのは邪魔!どうにかしてみた!

 どうも!新入社員のタケです!


今日はOculus Integrationで開発中に見つけた、VR操作でUIを使うときの隠された設定を使えるようにしてみました!

公式のスクリプトを一行変えるだけです!


今回いじるのはOculus IntegrationでuGUIを触る時に使ったUIHelperです。

UIHelperにはUIにカーソルがあっているかどうか示すためにポインターが表示されます。


VRでUIを使うときの設定を解説した記事はこちらにあるので分からない方はこちらからどうぞ!

https://glasses202.blogspot.com/2021/01/unityvrvrui.html


UIHelperの中身はこのようになっています。

UIを選んだ時に表示されるレーザーポインタとスフィアが子に入っていますね。


実際に使うとこのようになります。


スフィアはUIに当たった時だけ表示されますが、ラインは常に表示されますね。

私はこのラインが邪魔で仕方がないので、UIに当たった時だけ表示にしたいのです…!


しょうがないので公式のプログラムを改造してその機能つけよう!くらいの気持ちでいました。

Laser Pointerというスクリプトが制御しているようです。


早速プログラムの中身を見てみると…なにやら気になる記述が!


なんと、Enumが用意されているではないですか!

Enumはメニューのことで、設定すればinspectorなどでプルダウンメニューから操作できるようになります。


でもLaserPointerにはそんな操作はなかったので、これは…隠し機能…!!

下のほうにはLaserBeamBehaviorの変数がありましたが、Privateになっていました。


これではInspectorに表示されないので、Publicにしてあげます。


そうすると…Inspectorに新たな項目、Laser Beam Behaviorが追加されてONかOFF、On When Hit Targetの三つから選択できるようになります。


On When Hit Targetにしてあげるとスフィアと同じようにUIに当たった時だけレーザーが表示されるようになりました!



いや~公式の作ったスクリプトものぞいてみるものですね。

色々な発見があったり、こうやって実現すればいいんだな!というお勉強にもなりますよ!


--------------------------------------------------------------------------------

シェルパでは、3DCGや建築パースはもちろん
VRやARアプリの開発も行っています!
新しいことに興味のある方はきっと楽しめると思います!
新人研修も充実していて初心者でも3DCG経験者でも安心!

株式会社シェルパ
【福岡本社】
〒810-0042 福岡県福岡市中央区赤坂1丁目13-10赤坂有楽ビル7F 
【東京オフィス】
 〒101-0041 東京都千代田区神田須田町2丁目13-1YKS黒田ビル5F
TEL 092-717-6800 / FAX 092-717-6801

--------------------------------------------------------------------------------

コメント