Unity VRモードとuGUIの連携

Oculus Rift用UIには様々なものがありますが、ここではUnityのuGUI部品を注視してマウスやその他ボタンのクリックで反応するという最もオーソドックスなプログラムが公開されています。

こちらで公開されているパッケージを使うことでUnity + uGUIドラッグ&ドロップにも対応できます(ただし、付属のパッケージはOculus SDK 0.4.x時代の物)。

これをUnity5.1のVRモードで利用できる方法を紹介します(Unity5.1.2f1で評価)。

  1. Canvasを作成
  2. CanvasのRender Modeを「World Space」に変更
  3. Canvasの位置とスケールを調整
  4. 適当にUIを作成
  5. 上記フォーラムに記載されているBasicLookInputModule.csを作成し、HierarchyのEventSystemにアタッチ
  6. EventSystemに最初からアタッチされているStandaloneInputModuleおよびTouchInputModuleコンポーネントを削除または無効にする

あとはUIを画面の中心に合わせるとHoverに、その状態で”Fire1″(マウスの左ボタンや左Ctrlキー)を押すとPressになります。

これだと中心がわかりずらいので「Screen Space – Camera」のCanvasを作成して、中央にCrosshairなどのImageを表示するとよいでしょう(もちろん、Render CameraはMain Cameraに設定)。この時、「Screen Space – Camera」に設定したCanvasがイベントをキャッチしないように”Graphic Raycaster”コンポーネントを削除するか無効にするのがコツです。

これまでの内容をgithubに格納しておきます。

 

 

rin

自己紹介のところに書き込んでいました。。
変更箇所、修正後のファイルもいただきありがとうございます!

>> 現在のUnityでは座標が変わったそうです。フォーラムの最後の方で解説があります。

>> lookPosition.x = UnityEngine.VR.VRSettings.eyeTextureWidth/2;
>> lookPosition.y = UnityEngine.VR.VRSettings.eyeTextureHeight/2;
>> //lookPosition.x = Screen.width/2;
>> //lookPosition.y = Screen.height/2;

>> またこれを修正した LookInputSampleV6.zip というのがありますのでそちらを使ってみてください。
>> https://www.dropbox.com/s/q8zcylzs1ggt24n/LookInputSampleV6.zip?dl=0

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です