Unity는 VR 컨트롤러 입력을 별도 조이스틱으로 표시합니다. UnityEngine.Input 클래스를 사용하여 버튼 및 축 값에 액세스하십시오. 축 및 버튼 상태를 표시할 때 OpenVR Unity 통합은 특정 하드웨어를 참조하지 않습니다.
이 페이지에는 OpenVR이 지원하는 세 가지 타입의 컨트롤러에 대한 축 및 버튼 매핑이 나와 있습니다.
참고: Unity는 Valve Index 컨트롤러를 위한 개별 손가락 추적 정보를 지원하지 않습니다.
올바르게 설정되고 연결된 OpenVR 호환 컨트롤러의 이름은 내부적으로 OpenVR Controller - Left 또는 OpenVR Controller - Right 로 지정됩니다. UnityEngine.Input.GetJoystickNames()가 반환하는 목록을 통해 이러한 이름을 확인할 수 있습니다. 컨트롤러가 사용 가능하다면, Steam으로 테스트할 때 SteamVR 상태 메뉴에 해당 컨트롤러가 녹색으로 강조 표시됩니다. 이 메뉴는 Steam 및 SteamVR가 모두 컴퓨터에 설치되어 있고 실행 중이어야 사용할 수 있습니다.
스크립트를 통해 조이스틱 이름 목록에 컨트롤러가 있는지 주기적으로 확인하여 해당 컨트롤러의 사용 가능 여부를 테스트할 수 있습니다. 컨트롤러를 끄거나 컨트롤러에서 배터리를 분리하면 UnityEngine.Input.GetJoystickNames()가 반환하는 목록에서 해당 컨트롤러의 이름이 사라지고 빈 문자열로 대체됩니다. 컨트롤러를 다시 켜면 해당 컨트롤러의 이름이 반환된 조이스틱 목록에 다시 표시됩니다.
이 섹션은 OpenVR 기기가 지원하는 각 컨트롤러 타입에 대한 매핑 정보를 제공합니다.
아래 다이어그램은 VR 애플리케이션용 HTC Vive 컨트롤러에서 사용 가능한 여러 입력을 보여줍니다.
1 | 메뉴 버튼 |
---|---|
2 | 트랙패드 |
3 | 시스템 버튼 |
4 | 상태 표시등 |
5 | 마이크로-USB 포트 |
6 | 추적 센서 |
7 | 트리거 |
8 | 그립 버튼 |
아래 다이어그램은 VR 애플리케이션용 Oculus Touch 컨트롤러에서 사용 가능한 여러 입력을 보여줍니다.
아래 표에서는 각 OpenVR 지원 컨트롤러의 컨트롤러 입력, 컨트롤러의 상호작용 타입, Unity 버튼 ID와 축 ID, 각 축의 값 범위를 확인할 수 있습니다.
HTC Vive 컨트롤러 | Oculus Touch 컨트롤러 | Valve Index 컨트롤러 | 인터랙션 타입 | Unity 버튼 ID | Unity 축 ID | Unity 축의 값 범위 |
---|---|---|---|---|---|---|
왼쪽 컨트롤러 메뉴 버튼(1) | Button.Three | 왼쪽 컨트롤러 안쪽 버튼 | 누름 | 2 | ||
오른쪽 컨트롤러 메뉴 버튼(1) | Button.One | 오른쪽 컨트롤러 안쪽 버튼 | 누름 | 0 | ||
왼쪽 컨트롤러 바깥쪽 버튼 | 누름 | 3 | ||||
오른쪽 컨트롤러 바깥쪽 버튼 | 누름 | 1 | ||||
왼쪽 컨트롤러 트랙패드(2) | Button.PrimaryThumbstick | 왼쪽 컨트롤러 트랙패드 | 누름 | 8 | ||
오른쪽 컨트롤러 트랙패드(2) | Button.SecondaryThumbstick | 오른쪽 컨트롤러 트랙패드 | 누름 | 9 | ||
왼쪽 컨트롤러 트랙패드(2) | Button.PrimaryThumbstick | 왼쪽 컨트롤러 트랙패드 | 터치 | 16 | ||
오른쪽 컨트롤러 트랙패드(2) | Button.SecondaryThumbstick | 오른쪽 컨트롤러 트랙패드 | 터치 | 17 | ||
왼쪽 컨트롤러 트랙패드(2) | Axis2D.PrimaryThumbstick | 왼쪽 컨트롤러 트랙패드 | 가로 이동 | 1 | –1.01.0 | |
왼쪽 컨트롤러 트랙패드(2) | Axis2D.PrimaryThumbstick | 왼쪽 컨트롤러 트랙패드 | 세로 이동 | 2 | –1.01.0 | |
오른쪽 컨트롤러 트랙패드(2) | Axis2D.SecondaryThumbstick | 오른쪽 컨트롤러 트랙패드 | 가로 이동 | 4 | –1.01.0 | |
오른쪽 컨트롤러 트랙패드(2) | Axis2D.SecondaryThumbstick | 오른쪽 컨트롤러 트랙패드 | 세로 이동 | 5 | –1.01.0 | |
왼쪽 컨트롤러 트리거(7) | Axis1D.PrimaryIndexTrigger | 왼쪽 컨트롤러 트리거 | 터치 | 14 | ||
오른쪽 컨트롤러 트리거(7) | Axis1D.SecondaryIndexTrigger | 오른쪽 컨트롤러 트리거 | 터치 | 15 | ||
왼쪽 컨트롤러 트리거(7) | Axis1D.PrimaryIndexTrigger | 왼쪽 컨트롤러 트리거 | 압착 | 9 | 0.01.0 | |
오른쪽 컨트롤러 트리거(7) | Axis1D.SecondaryIndexTrigger | 오른쪽 컨트롤러 트리거 | 압착 | 10 | 0.01.0 | |
왼쪽 컨트롤러 그립 버튼(8) | Axis1D.PrimaryHandTrigger | 왼쪽 컨트롤러 그립 평균 | 압착 | 11 | 0.01.0 | |
오른쪽 컨트롤러 그립 버튼(8) | Axis1D.SecondaryHandTrigger | 오른쪽 컨트롤러 그립 평균 | 압착 | 12 | 0.01.0 |
OpenVR 기기를 지원하는 애플리케이션을 개발할 때에는 세 가지 컨트롤러의 버튼 입력 이벤트 트리거 및 응답 속도와 관련된 일부 차이점을 알아두는 것이 좋습니다.
Unity 터치 입력 이벤트는 플랫폼 컨트롤러에 따라 조금 차이가 있습니다.
HTC Vive와 Oculus Touch 컨트롤러의 그립 트리거는 서로 다릅니다.
HTC Vive 컨트롤러에는 각각 그립 버튼이 두 개씩 있지만, 모두 동일한 축에 매핑됩니다. 버튼을 누르지 않으면 값이 0.0이고, 누르면 값이 1.0이 됩니다. 0.0과 1.0 사이의 중간 값을 지정하는 것은 불가능합니다.
Oculus Touch 컨트롤러의 그립은 범위가 0.01.0인 아날로그 트리거입니다. 중간 값을 지정할 수 있습니다.