首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >捕获HTC Vive系统按钮的用法

捕获HTC Vive系统按钮的用法
EN

Stack Overflow用户
提问于 2017-02-14 05:17:56
回答 2查看 390关注 0票数 1

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

代码语言:javascript
复制
        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);
    }
EN

回答 2

Stack Overflow用户

发布于 2017-02-14 09:07:51

您可以捕获它,但您需要在SteamVR设置中设置向所有应用程序发送系统按钮的复选标记。

票数 0
EN

Stack Overflow用户

发布于 2017-02-23 00:43:28

使用SteamVR插件,您可以这样做。

代码语言:javascript
复制
[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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42213734

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档