【问题标题】:Capturing usage of the HTC Vive system button捕捉 HTC Vive 系统按钮的使用情况
【发布时间】:2017-02-13 21:17:56
【问题描述】:

系统按钮不可重新映射,但是否可以通过 Steam SDK 或 VRTK 控制器操作识别用户何时按下它?我看 VRTK 至少知道了吧?

        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);
    }

【问题讨论】:

    标签: unity3d steam htc-vive vrtk


    【解决方案1】:

    您可以捕获它,但您需要在 SteamVR 设置中设置一个勾选发送系统按钮到所有应用程序。

    【讨论】:

    • George,您能否详细说明一下,甚至可以使用代码示例?谢谢
    【解决方案2】:

    使用 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
        }
    
    }
    

    【讨论】:

    • 谢谢,但我收到“IndexOutOfRangeException:数组索引超出范围。”第 151 行 SteamVR_Controller.cs
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-05-06
    • 1970-01-01
    • 2015-02-24
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    相关资源
    最近更新 更多