SteamVR+HTCVive 交互事件
来源:互联网 发布:东莞优化网站 编辑:程序博客网 时间:2024/05/17 01:44
1,了解HTCVive手柄按钮对应名称
2,获取手柄输入事件
using UnityEngine;using System.Collections;//该脚本挂在[CameraRig] 下的Controller(left or right)即手柄 上public class WandController : MonoBehaviour { //1 获取控制器按钮ID private Valve.VR.EVRButtonId triggerBtn = Valve.VR.EVRButtonId.k_EButton_SteamVR_Trigger;//获取trigger Id private Valve.VR.EVRButtonId touchpadBtn = Valve.VR.EVRButtonId.k_EButton_SteamVR_Touchpad; //获取touchpad Id private Valve.VR.EVRButtonId gripBtn = Valve.VR.EVRButtonId.k_EButton_Grip;//获取grip Id private Valve.VR.EVRButtonId menuBtn = Valve.VR.EVRButtonId.k_EButton_ApplicationMenu;//获取menu Id //2 定义trackedObj (SteamVR_TrackedObject script 组件挂在[CameraRig] 下的Controller(left or right) 上 private SteamVR_TrackedObject trackedObj; //3 获取Device类 ,最后通过调用Device类下的方法GetTouch(Press)Down/GetTouch(Press)/GetTouch(Press)Up来获取按键事件 private SteamVR_Controller.Device device { get { return SteamVR_Controller.Input((int)trackedObj.index); } } // Use this for initialization void Start () { trackedObj = GetComponent<SteamVR_TrackedObject>(); } // Update is called once per frame void Update () { if (device == null) { Debug.Log("device not initialized"); return; } /** *下面是trigger键按下至松开过程的输入事件 * 按下(只会调用一次)-----> 按住(多次调用)-----> 松开(只会调用一次) * **/ if (device.GetPressDown(triggerBtn)) { //Debug.Log("trigger 刚按下"); } if (device.GetPress(triggerBtn)) { //Debug.Log("trigger 一直处于按下状态"); } if (device.GetPressUp(triggerBtn)) { //Debug.Log("trigger 刚松开"); } /** *下面是touchpad的触摸前后输入事件 */ if (device.GetTouchDown(touchpadBtn)) { //Debug.Log("手指刚接触触摸板"); } if (device.GetTouch(touchpadBtn)) { //Debug.Log("一直接触触摸板"); } if (device.GetTouchUp(touchpadBtn)) { //Debug.Log("手指离开触摸板"); } //手指在触摸板上的位置 为Vector2 类型 x,y 介于-1 至1之间 //Debug.Log("触摸点的位置:"+ device.GetAxis(touchpadBtn)); //扳机键按下的程度 为Vector2 类型 x介于0至1,y 始终为0 //Debug.Log("扳机键的位置:" + device.GetAxis(triggerBtn)); //使用hairTrigger来判断 //device.hairTriggerDelta = 0.5f;//hairTriggerDelta默认是0.1f; //Debug.Log(device.GetHairTriggerDown()); //手柄震动 参数可以理解为震动强度,默认500(参数超过4000会无效,导致震动不触发) //device.TriggerHapticPulse(3000); }}
0 0
- SteamVR+HTCVive 交互事件
- HTCVive VR开发场景事件交互指南
- HTCVive VR开发场景事件交互指南
- 基于SteamVR开发Htcvive应用-helloworld(一)
- SteamVR Unity工具包(三):控制器交互
- SteamVR Unity工具包(VRTK)控制器交互
- SteamVR
- SteamVR Unity工具包(VRTK)之控制器交互
- SteamVR Unity Tool Kit(三):控制器交互
- 关于SteamVR插件内置的交互系统InteractionSystem
- SteamVR Unity工具包(VRTK)之概览和控制器事件
- SteamVR Unity工具包(一):概览和控制器事件
- SteamVR Unity Tool Kit(一):概览和控制器事件
- HTC VIVE开发笔记(一)使用SteamVR插件进行基本的交互
- steamVR Plugin
- 根据Steamvr sdk中拓展代码,构造Htc vive 手柄按钮事件结构
- unity htcvive sdk 按键
- HTCVive 个人开发笔记
- 【.Net Framework 体积大?】不安装.net framework 也能运行!?原理简介补充附带工具-2
- OSG人机交互
- C++随机数的生成
- eclipse中文件存储的编码格式设置与对编码解码的理解
- OSG环境搭建与编译
- SteamVR+HTCVive 交互事件
- 编译时间从33.8秒降到4.5秒我只多做了一件事
- 大数据学习笔记之三十 Spark介绍之一
- 前端工程师不得不知道的ES6新特性(二)
- mac下如何安装WebStorm 破解版
- 优化shader程序的一些tips
- nginx反向代理-多端口映射
- 支付宝和微信支付的各种坑
- 漫步数学分析十八——紧集上连续函数的有界性