GaGe

[Unity] OVRCameraRig로 컨트롤러 입력 받는 방법 본문

Unity

[Unity] OVRCameraRig로 컨트롤러 입력 받는 방법

Sorrel 2021. 9. 29. 16:54

1. OVRCameraRig란?

2021.09.29 - [Unity] - [Unity] 오큘러스 퀘스트2 VR 카메라 셋팅하기 (OVRcamreaRig vs XR Rig), VR유니티 개발 초기 설정

 

[Unity] 오큘러스 퀘스트2 VR 카메라 셋팅하기 (OVRcamreaRig vs XR Rig), VR유니티 개발 초기 설정

1. OVRCameraRig Oculus Integration 패키지에 있는 VR 전용 camera 프리팹입니다. 2. OVRCameraRig 설치 및 셋팅 https://assetstore.unity.com/packages/tools/integration/oculus-integration-82022?locale=ko-..

mumumi.tistory.com

이전 글을 참고하길 바란다. 설명 및 설치 방법이다.

 

 

 

2. OVRInput.cs

 오큘러스 컨트롤러에서 입력을 감지하는 cs 이다. oculus integration plugin을 설치하면 프로젝트에 자동으로 생성된다.

 

 본인 같은 경우는 아무리 코드를 짜봐도 오큘러스 퀘스트2 컨트롤러에서 입력을 받을 수가 없었는데, 이 파일에 입력감지 코드 셋팅 자체가 잘못되어있어서 오른쪽 컨트롤러 기기의 입력을 감지할 자리에 왼쪽 컨트롤러 입력이 설정되어있었다. 이 패키지 파일 코드 자체를 수정했더니 오른쪽 컨트롤러 기기 입력을 감지할 수 있었다.

 

 진짜 아무리 코드를 고쳐도 컨트롤러의 입력 감지가 안 된다면 이 코드를 프로젝트 내에서 검색해서 열어보는 것을 추천한다.

 

 아래는 본인이 수정한 파일이다. 비교해보라.

OVRInput.cs
0.13MB

 

 

 

3. 컨트롤러의 Input 매핑

 

 오큘러스 컨트롤러 입력을 구글에 쳐본 사람이라면 무조건 이 사진을 보았을 것이다. 하지만 이 그림만으로는 어떻게 스크립트에서 사용하는지 모를 것이다. 이 키워드들을 이용해 스크립트에서 코드 짜는 법을 알려주겠다.

 

 

 

4. 코드 짜는 법

 

  • 버튼 누르기
using UnityEngine;


public class ovrtest : MonoBehaviour
{
   // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        BtnDown();
    }

    void BtnDown()
    {
        if (OVRInput.GetDown(OVRInput.Button.One)) //A버튼을 누르면
        {
            //어떤 기능을 수행할 것인지
            //Debug.Log("press one");
        }

        if (OVRInput.GetDown(OVRInput.Button.Two)) //B버튼을 누르면
        {
            //어떤 기능을 수행할 것인지
            //Debug.Log("press two");
        }
    }
}
 //이러한 형식으로 위에 표와 버튼을 대입시킨다.

 

  • 조이스틱 움직이기
//나머지는 위 코드와 같아서 함수만 기술함.

void Thumb(){
    if (OVRInput.Get(OVRInput.Touch.SecondaryThumbstick))
    {
        //오른쪽 조이스틱은 SecondaryThumbstick이고 왼쪽 조이스틱은 PrimaryThumbstick이다.
        Vector2 thumbstick = OVRInput.Get(OVRInput.Axis2D.SecondaryThumbstick);

        if (thumbstick.x < 0) //왼쪽으로 조이스틱을 움직였다면
        {
            //코딩
        }
        else if (thumbstick.x > 0) //오른쪽으로 조이스틱을 움직였다면
        {
		//코딩
        }
        
        if (thumbstick.y < 0) //아래쪽로 조이스틱을 움직였다면
        {
            //코딩
        }
        else if (thumbstick.y > 0) //위쪽으로 조이스틱을 움직였다면
        {
		//코딩
        }
        
    }
}

 

 

5. 적용하는 법

스크립트를 OVRCameraRig의 인스펙터에 드래그 앤 드롭한다.

 

본인은 OVRCameraRig/TrackingSpace/RightHandAnchor/myBeam(이 오브젝트는 본인이 만든 것) 아래에 넣어놨는데 이전 담당자가 이 아래에 하위 오브젝트를 생성하고 그곳에 스크립트를 셋팅해서 따라하다보니 그렇게 됐다. 그냥 OVRCameraRig에 넣어서 입력 감지가 안 된다면 한번 OVRCameraRig/TrackingSpace/RightHandAnchor에 오브젝트를 만들어서 넣어보라.

 

 

 


도움이 되었다면 공감 부탁드립니다.

초보 개발자에게 큰 힘이 됩니다.

Comments