【Unity(C#)】OculusIntegration을 사용하여 VR 공간에서 Slider를 조작

목적



VR 공간 내에서 슬라이더의 UI를 조작하여 게임 난이도 설정
라는 것이 이번 목적입니다.

이 기사에서는 VR 공간 내에서 슬라이더의 UI를 조작의 부분을 설명합니다.

데모



실제로 만든 것이 여기입니다.
외형은 두고, 기능으로서는 완성입니다.



OculusIntegration 설정



①OVRInputModule 설정


Create Empty 에서 GameObject를 생성하고 OVRInputModule 를 Add Component 합니다.

설정 항목으로는 3개소만 있습니다.
이번에는 집게 손가락 트리거로 조작하는 설정으로하고 있습니다.
커서의 위치는 나중에 설명합니다.


②Cursor 설정



그런 다음 커서 설정입니다.Create Empty 에서 GameObject를 생성하고 LaserPointer 를 Add Component 합니다.
같은 개체에 LineRenderer 또한 Add Component합니다.

그리고, LineRenderer가 너무 굵기 때문에 Width를 0.03정도로 했습니다.
원하는대로 material을 설정하여 레이저 색상을 변경할 수 있습니다.


이번 데모에서는 커서는 표시하지 않지만,
필요한 경우 CursorVisual 좋아하는 커서(게임 오브젝트)를 부착하면 OK입니다.


③OVRRaycaster 추가



Canvas 에 OVRRaycaster 를 Add Component합니다.
이제 Canvas의 자식 UI에 대한 작업이 가능합니다.
원래 있다 GraphyicRaycaster (은)는 지워 버릴 수 있습니다.

설정 완료!



이제 더 이상 UI를 조작할 수 있습니다.
OculusIntegration 신이군요.

코드



슬라이더의 값을 취득하는 메소드, GetLevel 를 준비합니다.

슬라이더에 부착
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 에 준비되어 있는 이벤트 핸들러입니다.
이미지처럼 등록하여 사용합니다.



이제 Slider 값이 변경되면 텍스트도 변경됩니다.

Editor상에서 Slider의 Value를 직접 편집해도 반영되지 않으므로 주의입니다.

좋은 웹페이지 즐겨찾기