알맹이방
[Unity] OVRCameraRig로 컨트롤러 입력 받는 방법 본문
1. OVRCameraRig란?
2021.09.29 - [Unity] - [Unity] 오큘러스 퀘스트2 VR 카메라 셋팅하기 (OVRcamreaRig vs XR Rig), VR유니티 개발 초기 설정
이전 글을 참고하길 바란다. 설명 및 설치 방법이다.
2. OVRInput.cs
오큘러스 컨트롤러에서 입력을 감지하는 cs 이다. oculus integration plugin을 설치하면 프로젝트에 자동으로 생성된다.
본인 같은 경우는 아무리 코드를 짜봐도 오큘러스 퀘스트2 컨트롤러에서 입력을 받을 수가 없었는데, 이 파일에 입력감지 코드 셋팅 자체가 잘못되어있어서 오른쪽 컨트롤러 기기의 입력을 감지할 자리에 왼쪽 컨트롤러 입력이 설정되어있었다. 이 패키지 파일 코드 자체를 수정했더니 오른쪽 컨트롤러 기기 입력을 감지할 수 있었다.
진짜 아무리 코드를 고쳐도 컨트롤러의 입력 감지가 안 된다면 이 코드를 프로젝트 내에서 검색해서 열어보는 것을 추천한다.
아래는 본인이 수정한 파일이다. 비교해보라.
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에 오브젝트를 만들어서 넣어보라.
도움이 되었다면 공감 부탁드립니다.
초보 개발자에게 큰 힘이 됩니다.