LoginSignup
1
2

More than 3 years have passed since last update.

【Unity(C#)】OculusIntegrationを使ってVR空間でSliderを操作

Last updated at Posted at 2019-09-29

目的

VR空間内でスライダーのUIを操作して、ゲームの難易度を設定する
というのが今回の目的です。

この記事ではVR空間内でスライダーのUIを操作の部分を記述します。

デモ

実際に作成したものがこちらです。
見た目は置いといて、機能としては完成です。

Slider.gif

OculusIntegrationの設定

①OVRInputModuleの設定

Create EmptyでGameObjectを生成して、OVRInputModuleをAdd Componentします。

設定項目としては3か所だけです。
今回は人差し指のトリガーで操作する設定にしてます。
Cursorの箇所は後述します。
InputSettings.PNG

②Cursorの設定

続いて、Cursorの設定です。
Create EmptyでGameObjectを生成して、LaserPointerをAdd Componentします。
同じオブジェクトにLineRendererもAdd Componentします。

あと、LineRendererが太すぎるのでWidthを0.03くらいにしました。
お好みでmaterialを設定してレーザーの色を変えたりできます。
LineRenderWidth.PNG

今回のデモではカーソルは表示していませんが、
必要な場合はCursorVisualお好きなカーソル(ゲームオブジェクト)をアタッチすればOKです。
CursorVisual.PNG

③OVRRaycasterを追加

CanvasにOVRRaycasterをAdd Componentします。
これで、そのCanvasの子のUIに対して操作が可能になります。
もともとあるGraphyicRaycasterは消してしまって構いません。

設定完了!

これでもうUIを操作できます。
OculusIntegration神ですね。

コード

スライダーの値を取得するメソッド、GetLevelを用意します。

Sliderにアタッチ
using UnityEngine;
using UnityEngine.UI;

public class LevelGetFromSlider : MonoBehaviour
{
    Slider levelSlider;

    void Start()
    {
        levelSlider = this.gameObject.GetComponent<Slider>();
    }

    public int GetLevel()
    {
        return (int)levelSlider.value;
    }
}

Textにアタッチ
using UnityEngine.UI;
using UnityEngine;

public class LevelText : MonoBehaviour
{
    [SerializeField]
    LevelGetFromSlider _levelGetFromSlider;

    Text levelText;

    void Start()
    {
        levelText = this.gameObject.GetComponent<Text>();
    }

    public void LevelTextChange()
    {
        levelText.text = _levelGetFromSlider.GetLevel().ToString();
    }

}

後はテキスト側でOn Value Changedに登録するメソッド内で先程のGetLevelを使います。
On Value Changedというのは、Slider Componentに用意されているイベントハンドラーです。
画像のように登録して使います。

OnValueChanged.PNG

これでSliderの値が変更された際に、テキストも変わります。

Editor上でSliderのValueを直接編集しても反映されないので注意です。

1
2
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
1
2