1
2

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.

【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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?