10
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

VR開発中にOVRRaycasterで少しハマった話

Last updated at Posted at 2018-06-03

VRと書きましたが主にOculusの話です、すみません。

はじめに

こちらのツイートを見て、今開発中のゲームのデバッグ機能として追加してみたところ、ハマったポイントがあったので、同じような境遇の人がいたら助けになるといいなあというところです。

結論から言うとOculusから提供されているOVRRaycaster.csではGraphics.raycastTargetの判定をしていないようです。
uGUI操作の時なんかうまく動かないなと思ったら以下を試してみてください。

OVRRaycaster.cs
private void GraphicRaycast(Canvas canvas, Ray ray, List<RaycastHit> results) {
...
                if (graphic.depth == -1)
                    continue;
...
        }

上記のコードを以下のように修正します。

OVRRaycaster.cs
private void GraphicRaycast(Canvas canvas, Ray ray, List<RaycastHit> results) {
...
                if (graphic.depth == -1 || !graphic.raycastTarget)
                    continue;
...
        }

これでうまく動きました。

これより下はRuntimeInspectorの紹介とOculusGoでuGUIを操作するときの備忘録です。

メモ

今回使用したアセットはUnityRuntimeInspectorです。
https://github.com/yasirkula/UnityRuntimeInspector
イメージ

こんな感じのヒエラルキ・インスペクタをゲームシーン上からプレビューできるようになります。

OculusGoにはRemoteContollerが付属しているので、こちらのコントローラからRaycastingを行い、uGUIのコントロールを行おうと目論みました。(今回はGazeInputは使用しませんでした)

調べてみるとOculus社がRayCastをマウスインプットのように変換するラッパーを提供されているようです。> OVRInputModule.csOVRRaycaster.cs

使用方法

  • OVRInputModule.csをStandardInputModuleの代わりにEventSystemにアタッチ
  • OVRRaycaster.csをGraphicRaycasterの代わりにCanvasにアタッチ

これだけで、RemoteContorollerからuGUIに対して入力を送ることができるようになりました、簡単ですね。

10
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?