Unity XR

[Unity XR] OVRInput-Shoot Ball XR

나만두 2024. 8. 25. 01:27

 

 

 

컨트롤러를 사용해 상호작용하기 위해서, OVRInput 알아둔다.

OVRInput은 크게 3가지 사용으로 나뉜다.

 

OVRInput.Get(): 컨트롤러의 상태 

OVRInput.Getdown(): 현재 프레임에 눌린 버튼의 정보

OVRInput.Getup(): 현재 프레임에 해제된 버튼의 정보

 

 

컨트롤러 Input 정보를 얻기 위해 Enumerate들을 제공한다.

 

1. Virtualized input Mapping

  • OVRInput.Button
  • OVRInput.Touch
  • OVRInput.NearTouch
  • OVRInput.Axis1D
  • OVRInput.Axis2

 

2.Raw Input Access

  • OVRInput.RawButton
  • OVRInput.RawTouch
  • OVRInput.RawNearTouch
  • OVRInput.RawAxis1D
  • OVRInput.RawAxis2D

 

첫 번째 Virtualized input Mapping(가상화 입력 매핑)은 다양한 컨트롤러 간에 일관된 입력 체계를 제공하기 위해 설계되었다.

이게 개발자들이 컨트롤러의 물리적인 차이점을 신경 쓰지 않아도 동일한 코드로 컨트롤러를 지원할 수 있도록 한다.(고수준 매핑 방식)

 

두 번째 Raw Input Access(원시 입력 접근)은 컨트롤러의 실제 상태에 직접적인 접근을 제공한다. 예를 들어 컨트롤러의 종류에 따라 코드를 다르게 작성해야 할 수 있다. 따라서 일관성이 떨어진다.

 

 

Controller Mapping

 

//예제


// A버튼을 눌었을 때 True
OVRInput.Get(OVRInput.Button.One);

// 현재 프레임에 A버튼을 누르면, True반환
OVRInput.GetDown(OVRInput.Button.One);

// 현제 프레임에 X버튼을 떼면 True반환
OVRInput.GetUp(OVRInput.RawButton.X);

// 왼쪽 컨트롤러의 Thumbstick에 대한 Vector2 반환
// (X/Y 범위: -1.0f to 1.0f)
OVRInput.Get(OVRInput.Axis2D.PrimaryThumbstick);

// ThumbStick버튼을 눌렀을 때 True반환
OVRInput.Get(OVRInput.Button.PrimaryThumbstick);

// B버튼을 눌렀을 때 컨트롤러의 상태 반환
OVRInput.Get(OVRInput.Touch.Two);

 

예제

 

 

 

 

 

 

 

테스트

 

 

 CameraRig- TrackingSpace-RightHandAnchor에 Spawn Ball 스크립트를 생성한다.

 

 

 

 

 

 

One버튼(A버튼)을 눌렀을 때, IndexTrigger버튼을 눌렀을 때, HandTrigger버튼을 눌렀을때, Tumbstick을 위로 올렸을 때 

각자 다른 색의 공을 생성해 앞 방향으로 쏘는 간단한 스크립트를 작성한다.

 

 

결과

 

 

 

 

 

 

참고:https://developer.oculus.com