IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> Unity HTC ViveInputUtility总结 -> 正文阅读

[游戏开发]Unity HTC ViveInputUtility总结

HandRole包括

public enum HandRole
    {
        Invalid = -1,
        RightHand,
        LeftHand,
        ExternalCamera,
        Controller3 = ExternalCamera,
        Controller4,
        Controller5,
        Controller6,
        Controller7,
        Controller8,
        Controller9,
        Controller10,
        Controller11,
        Controller12,
        Controller13,
        Controller14,
        Controller15,
    }

按钮包括

  • 开关、系统菜单按钮:只有这个按钮不可以编程(默认),用来打开手柄,其实没用关的功能。在游戏中按下该按钮是调出系统默认的菜单,用来关闭,切换游戏用的。
  • menu按钮:默认用来打开游戏菜单。
  • grip按钮:用的最少的按钮,每个手柄上虽然有两个,但是是相同的。
  • trigger按钮:扳机按钮,用的最多,可以有力度。
  • pad:触摸屏+鼠标的功能,可触摸,可点击。
    public enum ControllerButton
    {
        [InvalidEnumArrayIndex]
        None = -1,

        // classic buttons
        System = 14,
        Menu = 4, // Cosmos(RightHandB, LeftHandY), Index(B)
        MenuTouch = 7, // Cosmos(RightHandB, LeftHandY), Index(B)
        Trigger = 0, // on:0.55 off:0.45
        TriggerTouch = 8, // on:0.25 off:0.20
        Pad = 1,
        PadTouch = 3,
        Joystick = 47,
        JoystickTouch = 48,
        Grip = 2,
        GripTouch = 9,
        CapSenseGrip = 10, // on:1.00 off:0.90 // Knuckles, Oculus Touch only
        CapSenseGripTouch = 11, // on:0.25 off:0.20 // Knuckles, Oculus Touch only
        ProximitySensor = 15,
        Bumper = 16,
        BumperTouch = 17,
        AKey = 12, // Knuckles(InnerFaceButton), Oculus Touch(RightHandA or LeftHandX pressed), Cosmos(RightHandA, LeftHandX), Index(A)
        AKeyTouch = 13, // Knuckles(InnerFaceButton), Oculus Touch(RightHandA or LeftHandX touched), Cosmos(RightHandA, LeftHandX), Index(A)

        // button alias
        BKey = Menu,
        BkeyTouch = MenuTouch,
        OuterFaceButton = Menu, // 7
        OuterFaceButtonTouch = MenuTouch, // 9
        InnerFaceButton = AKey, // 12
        InnerFaceButtonTouch = AKeyTouch, // 13

        [HideInInspector]
        Axis0 = Pad,
        [HideInInspector]
        Axis1 = Trigger,
        [HideInInspector]
        Axis2 = CapSenseGrip,
        [HideInInspector]
        Axis3 = Bumper,
        [HideInInspector]
        Axis4 = 18,
        [HideInInspector]
        Axis0Touch = PadTouch,
        [HideInInspector]
        Axis1Touch = TriggerTouch,
        [HideInInspector]
        Axis2Touch = CapSenseGripTouch,
        [HideInInspector]
        Axis3Touch = BumperTouch,
        [HideInInspector]
        Axis4Touch = 19,

        // virtual buttons
        HairTrigger = 5, // Pressed if trigger button is pressing, unpressed if trigger button is releasing
        FullTrigger = 6, // on:1.00 off:1.00

        DPadLeft = 20,
        DPadUp = 21,
        DPadRight = 22,
        DPadDown = 23,

        DPadLeftTouch = 24,
        DPadUpTouch = 25,
        DPadRightTouch = 26,
        DPadDownTouch = 27,

        DPadUpperLeft = 28,
        DPadUpperRight = 29,
        DPadLowerRight = 30,
        DPadLowerLeft = 31,

        DPadUpperLeftTouch = 32,
        DPadUpperRightTouch = 33,
        DPadLowerRightTouch = 34,
        DPadLowerLeftTouch = 35,

        DPadCenter = 36,
        DPadCenterTouch = 37,

        // Gestures
        IndexPinch = 38,
        MiddlePinch = 39,
        RingPinch = 40,
        PinkyPinch = 41,
        Fist = 42,
        Five = 43,
        Ok = 44,
        ThumbUp = 45,
        IndexUp = 46,

        [Obsolete]
        [HideInInspector]
        JoystickToucn = 48,
    }

1、静态类Vive Input

public class GetPressDown_ViveInput : MonoBehaviour
{
    private void Update()
    {
        if (ViveInput.GetPressDown(HandRole.RightHand,ControllerButton.Trigger))
        {
            //TODO
        }
    }
}

2、?监听按钮事件:?
?

public class GetPressDown_ViveInputHandler : MonoBehaviour
{
    private void Awake()
    {
        ViveInput.AddPressDown(HandRole.LeftHand, ControllerButton.Trigger, Ontrigger);
    }
    private void OnDestroy()
    {
        ViveInput.RemovePressDown(HandRole.LeftHand,ControllerButton.Trigger, Ontrigger);
    }

    private void Ontrigger()
    {
        throw new NotImplementedException();
    }
}

3、获得追踪pose:?
? ? ? ?? ?? ?? ?静态类VivePose提供了获得设备pose的API;?
?

public class GetPoseExample : MonoBehaviour
{
    //使go跟随右手
    public GameObject deviceOrigin;
    public Transform goTrans;
    private void Start()
    {
        deviceOrigin = GameObject.Find("VROrigin");
    }
    private void Update()
    {
        VivePose.SetPose(goTrans, HandRole.RightHand, deviceOrigin.transform);
    }
}

事件响应

vive支持以下事件?

  • IColliderEventHoverEnterHandler
  • IColliderEventHoverExitHandler
  • IColliderEventPressDownHandler
  • IColliderEventPressUpHandler
  • IColliderEventPressEnterHandler
  • IColliderEventPressExitHandler
  • IColliderEventClickHandler
  • IColliderEventDragStartHandler
  • IColliderEventDragUpdateHandler
  • IColliderEventDragEndHandler
  • IColliderEventDropHandler
  • IColliderEventAxisChangedHandler

使用方法,新建脚本如下,并把脚本添加到游戏对象,即可。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using HTC.UnityPlugin.ColliderEvent;
 
public class viveLearn : MonoBehaviour,IColliderEventHoverEnterHandler 
{
 
    public void OnColliderEventHoverEnter(ColliderHoverEventData eventData){

        Debug.Log ("hover");

    }
}

引用链接:ViveInputUtility开发HTC VIVE 手柄控制按键_yuanpan的专栏-CSDN博客

【Unity+Vive】第一篇:Vive Input Utility的使用指南_罗锦荣的专栏-CSDN博客_viveinpututility使用指南

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2022-01-16 13:26:03  更:2022-01-16 13:27:46 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 18:42:20-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码