공간 매핑의 일반적인 문제 해결
Windows 혼합 현실 입력

Unity XR 입력(Unity XR Input)

여기에서는 가상 현실, 증강 현실 및 혼합 현실 애플리케이션에서 상호작용하기 위해 사용되는 모든 Unity 지원 입력 기기에 대한 정보를 제공합니다.

XR 입력 매핑

레거시 입력 축과 버튼 인덱스를 통해 XR 입력 기능에 액세스할 수 있습니다. 이 표에는 각 플랫폼에서 매핑되는 기능에 대한 내용이 요약되어 있습니다. 버튼 및 조이스틱 축을 사용하는 방법에 관한 자세한 내용은 기존의 게임 입력 문서를 참조하십시오.

기능 사용 기능 유형 레거시 입력 인덱스[L/R] WMR Oculus GearVR Daydream OpenVR (Full) Vive OpenVR (Oculus) OpenVR (WMR)
Primary2DAxis 2D 축 [(1,2)/(4,5)] 조이스틱 조이스틱 조이스틱 터치패드 [트랙패드/조이스틱] 트랙패드 조이스틱 조이스틱
트리거 [9/10] 트리거 트리거 트리거 트리거 트리거 트리거 트리거 트리거
그립 [11/12] 그립 그립 그립 그립 그립 그립 그립
IndexTouch [13/14] 검지 - 인접 터치
ThumbTouch [15/16] 엄지 - 인접 터치
Secondary2DAxis 2DAxis [(17,18)/(19,20)] 터치패드 터치패드
IndexFinger [21/22] 검지
MiddleFinger [23/24] 중지
RingFinger [25/26] 약지
PinkyFinger [27/28] 소지
CombinedTrigger [3/3] CombinedTrigger 연결 트리거 연결 트리거 연결 트리거 연결 트리거 연결 트리거
PrimaryButton 버튼 [2/0] [X/A] 기본 기본 기본 [Y/B] 메뉴
PrimaryTouch 버튼 [12/10] [X/A] - 터치
SecondaryButton 버튼 [3/1] [Y/B] 대체 대체 [B/A]
SecondaryTouch 버튼 [13/11] [Y/B] - 터치
GripButton 버튼 [4/5] 그립 - 누르기 그립 - 누르기 그립 - 누르기 그립 - 누르기 그립 - 누르기 그립 - 누르기 그립
TriggerButton 버튼 [14/15] 트리거 - 누르기 검지 - 터치 트리거 - 누르기 트리거 - 누르기 트리거 - 누르기 트리거 - 누르기 트리거 - 터치 트리거 - 누르기
MenuButton 버튼 [6/7] 메뉴 시작 (6)
Primary2DAxisClick 버튼 [8/9] 조이스틱 - 클릭 썸스틱 - 클릭 터치패드 - 클릭 터치패드 - 클릭 StickOrPad - 누르기 StickOrPad - 누르기 StickOrPad - 누르기 터치패드 - 클릭
Primary2DAxisTouch 버튼 [16/17] 터치패드 - 클릭 썸스틱 - 터치 터치패드 - 터치 터치패드 - 터치 StickOrPad - 터치 StickOrPad - 터치 StickOrPad - 터치 터치패드 - 터치
Thumbrest 버튼 [18/19] 터치패드 - 터치 ThumbRest - 터치

레거시 입력 시스템을 통한 XR 입력

위 표에 나온 적절한 레거시 입력 인덱스를 사용하면 레거시 입력 시스템을 통해 XR 입력 기능을 폴링할 수 있습니다. Edit > Settings > Input 에서 축 매핑을 생성한 후 입력 이름의 적절한 매핑을 플랫폼 기기 기능의 축 인덱스에 추가하십시오. 버튼 또는 축 값은 현재 매핑된 축 또는 버튼 이름을 전달한 후 Input.GetAxis 또는 Input.GetButton를 사용하여 가져올 수 있습니다.

햅틱스

현재 추적된 XRNode에 대한 입력 기기를 검색해서 가져올 수 있습니다. 추적된 XRNode에 유효한 입력 기기가 있으면 Unity는 햅틱 데이터를 해당 입력 기기로 라우팅하여 착용자에게 몰입도 높은 피드백을 제공합니다. Unity는 진폭과 지속시간이 포함된 간단한 임펄스 또는 데이터 버퍼로 햅틱 데이터를 전달할 수 있습니다.

모든 플랫폼이 모든 햅틱 유형을 지원하지만, 햅틱 기능에 대해 기기에 쿼리할 수 있습니다. 다음 예시는 오른손잡이용 입력 기기를 가져온 후 해당 기기가 햅틱 기능을 지원하는지 확인하고, 지원하는 경우 임펄스를 재생합니다.

InputDevice device = InputDevices.GetDeviceAtXRNode(XRNode.RightHand);
HapticCapabilities capabilities;
if(device.TryGetHapticCapabilities(out capabilities))
{
    if(capabilities.supportsImpulse)
    {
        uint channel = 0;
        float amplitude = 0.5f;
        float duration = 1.0f;
        device.SendHapticImpulse(channel, amplitude, duration);
    }
}

참고: 이 코드 예시는 UnityEngine.XR 네임스페이스를 사용합니다.


공간 매핑의 일반적인 문제 해결
Windows 혼합 현실 입력