2017-02-13 4 views
1

시스템 버튼은 다시 매핑 할 수 없지만 사용자가 Steam SDK 또는 VRTK 컨트롤러 작업을 통해 언제 이것을 눌렀는 지 식별 할 수 있습니까? VRTK가 적어도 그것에 대해 알고 있다는 것을 알 수 있습니까?HTC Vive 시스템 사용 버튼 캡처

 public virtual void InitaliseHighlighters() 
    { 
     highlighterOptions = new Dictionary<string, object>(); 
     highlighterOptions.Add("resetMainTexture", true); 
     VRTK_BaseHighlighter objectHighlighter = VRTK_BaseHighlighter.GetActiveHighlighter(gameObject); 

     if (objectHighlighter == null) 
     { 
      objectHighlighter = gameObject.AddComponent<VRTK_MaterialColorSwapHighlighter>(); 
     } 

     var controllerHand = VRTK_DeviceFinder.GetControllerHand(gameObject); 

     objectHighlighter.Initialise(null, highlighterOptions); 
     AddHighlighterToElement(GetElementTransform(VRTK_SDK_Bridge.GetControllerElementPath(SDK_BaseController.ControllerElements.ButtonOne, controllerHand)), objectHighlighter, elementHighlighterOverrides.buttonOne); 
     AddHighlighterToElement(GetElementTransform(VRTK_SDK_Bridge.GetControllerElementPath(SDK_BaseController.ControllerElements.ButtonTwo, controllerHand)), objectHighlighter, elementHighlighterOverrides.buttonTwo); 
     AddHighlighterToElement(GetElementTransform(VRTK_SDK_Bridge.GetControllerElementPath(SDK_BaseController.ControllerElements.Body, controllerHand)), objectHighlighter, elementHighlighterOverrides.body); 
     AddHighlighterToElement(GetElementTransform(VRTK_SDK_Bridge.GetControllerElementPath(SDK_BaseController.ControllerElements.GripLeft, controllerHand)), objectHighlighter, elementHighlighterOverrides.gripLeft); 
     AddHighlighterToElement(GetElementTransform(VRTK_SDK_Bridge.GetControllerElementPath(SDK_BaseController.ControllerElements.GripRight, controllerHand)), objectHighlighter, elementHighlighterOverrides.gripRight); 
     AddHighlighterToElement(GetElementTransform(VRTK_SDK_Bridge.GetControllerElementPath(SDK_BaseController.ControllerElements.StartMenu, controllerHand)), objectHighlighter, elementHighlighterOverrides.startMenu); 
     AddHighlighterToElement(GetElementTransform(VRTK_SDK_Bridge.GetControllerElementPath(SDK_BaseController.ControllerElements.SystemMenu, controllerHand)), objectHighlighter, elementHighlighterOverrides.systemMenu); 
     AddHighlighterToElement(GetElementTransform(VRTK_SDK_Bridge.GetControllerElementPath(SDK_BaseController.ControllerElements.Touchpad, controllerHand)), objectHighlighter, elementHighlighterOverrides.touchpad); 
     AddHighlighterToElement(GetElementTransform(VRTK_SDK_Bridge.GetControllerElementPath(SDK_BaseController.ControllerElements.Trigger, controllerHand)), objectHighlighter, elementHighlighterOverrides.trigger); 
    } 

답변

0

캡처 할 수 있지만 SteamVR 설정의 모든 응용 프로그램으로 시스템 버튼을 전송하려면 눈금을 설정해야합니다.

+0

조지, 코드 샘플을 사용해도 될까요? 감사합니다 – ManxJason

0

SteamVR 플러그인을 사용하면 다음과 같이 할 수 있습니다.

[SerializeField] SteamVR_TrackedObject Controller; 
SteamVR_Controller.Device device; 
void Update(){ 
    device = SteamVR_Controller.Input ((int)Controller.index); 
    if(device.GetPress (SteamVR_Controller.ButtonMask.System)) 
    { 
     //your code 
    } 

} 
+0

고마워요하지만 'IndexOutOfRangeException 받고 : 배열 인덱스가 범위를 벗어났습니다.' 151 번째 줄 SteamVR_Controller.cs – ManxJason

관련 문제