[Unity XR] OVRInput-Shoot Ball XR
컨트롤러를 사용해 상호작용하기 위해서, 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(원시 입력 접근)은 컨트롤러의 실제 상태에 직접적인 접근을 제공한다. 예를 들어 컨트롤러의 종류에 따라 코드를 다르게 작성해야 할 수 있다. 따라서 일관성이 떨어진다.

//예제
// 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