UnityXR 手柄按键输入

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.XR;
using UnityEngine.UI;public class JackXRUse : MonoBehaviour
{private int int_AR, int_BR, int_TR, int_GR, int_MR;private int int_AL, int_BL, int_TL, int_GL, int_ML;public Text Text_AR, Text_BR, Text_TR, Text_GR, Text_MR, Text_JSR_x, Text_JSR_y;public Image Image_JSR;public Text Text_AL, Text_BL, Text_TL, Text_GL, Text_ML, Text_JSL_x, Text_JSL_y;public Image Image_JSL;private bool bool_AR, bool_BR, bool_TR, bool_GR, bool_MR;private bool bool_AR_On, bool_BR_On, bool_TR_On, bool_GR_On, bool_MR_On;private bool bool_AL, bool_BL, bool_TL, bool_GL, bool_ML;private bool bool_AL_On, bool_BL_On, bool_TL_On, bool_GL_On, bool_ML_On;private void Update(){//列出所有输入设备,根据XR节点获取输入设备,必须先获取到输入设备,再获取对应输入设备的输入键值var rightDevice = new List<InputDevice>();var leftdevice = new List<InputDevice>();bool menuValueright, gripValueright, triggerValueright, primaryValueright, secondaryValueright;bool menuValueleft, gripValueleft, triggerValueleft, primaryValueleft, secondaryValueleft;Vector2 joystickright, joystickleft;InputDevices.GetDevicesAtXRNode(XRNode.RightHand, rightDevice);InputDevices.GetDevicesAtXRNode(XRNode.LeftHand, leftdevice);if (rightDevice.Count != 0 && leftdevice.Count != 0){InputDevice rightcontroller = rightDevice[0];InputDevice leftcontroller = leftdevice[0];//右手A键rightcontroller.TryGetFeatureValue(CommonUsages.primaryButton, out primaryValueright);if(primaryValueright){bool_AR = true;}else{bool_AR = false;bool_AR_On = true;}//右手B键rightcontroller.TryGetFeatureValue(CommonUsages.secondaryButton, out secondaryValueright);if (secondaryValueright){bool_BR = true;}else{bool_BR = false;bool_BR_On = true;}//右手Trigger键rightcontroller.TryGetFeatureValue(CommonUsages.triggerButton, out triggerValueright);if (triggerValueright){bool_TR = true;}else{bool_TR = false;bool_TR_On = true;}//右手Grip键rightcontroller.TryGetFeatureValue(CommonUsages.gripButton, out gripValueright);if (gripValueright){bool_GR = true;}else{bool_GR = false;bool_GR_On = true;}//右手Menu键rightcontroller.TryGetFeatureValue(CommonUsages.menuButton, out menuValueright);if (menuValueright){bool_MR = true;}else{bool_MR = false;bool_MR_On = true;}//右手摇杆rightcontroller.TryGetFeatureValue(CommonUsages.primary2DAxis, out joystickright);//显示摇杆的Vector2数据Image_JSR.transform.localPosition = joystickright;  Text_JSR_x.text = joystickright.x.ToString();Text_JSR_y.text = joystickright.y.ToString();//右手A键按下if (bool_AR && bool_AR_On){bool_AR_On = !bool_AR_On;GetHandleRightADown();}//右手A键按住if (bool_AR){GetHandleRightA();}//右手B键按下if (bool_BR && bool_BR_On){bool_BR_On = !bool_BR_On;GetHandleRightBDown();}//右手B键按住if (bool_BR){GetHandleRightB();}//右手Trigger键按下if (bool_TR && bool_TR_On){bool_TR_On = !bool_TR_On;GetHandleRightTDown();}//右手Trigger键按住if (bool_TR){GetHandleRightT();}//右手Grip键按下if (bool_GR && bool_GR_On){bool_GR_On = !bool_GR_On;GetHandleRightGDown();}//右手Grip键按住if (bool_GR){GetHandleRightG();}//右手Menu键按下if (bool_MR && bool_MR_On){bool_MR_On = !bool_MR_On;GetHandleRightMDown();}//右手Menu键按住if (bool_MR){GetHandleRightM();}//右手JoyStickif (joystickright.x > 0.5f){}if (joystickright.x < -0.5f){}if (joystickright.y > 0.5f){}if (joystickright.y < -0.5f){}//左手A键leftcontroller.TryGetFeatureValue(CommonUsages.primaryButton, out primaryValueleft);if (primaryValueleft){bool_AL = true;}else{bool_AL = false;bool_AL_On = true;}//左手B键leftcontroller.TryGetFeatureValue(CommonUsages.secondaryButton, out secondaryValueleft);if (secondaryValueleft){bool_BL = true;}else{bool_BL = false;bool_BL_On = true;}//左手Trigger键leftcontroller.TryGetFeatureValue(CommonUsages.triggerButton, out triggerValueleft);if (triggerValueleft){bool_TL = true;}else{bool_TL = false;bool_TL_On = true;}//左手Grip键leftcontroller.TryGetFeatureValue(CommonUsages.gripButton, out gripValueleft);if (gripValueleft){bool_GL = true;}else{bool_GL = false;bool_GL_On = true;}//左手Menu键leftcontroller.TryGetFeatureValue(CommonUsages.menuButton, out menuValueleft);if (menuValueleft){bool_ML = true;}else{bool_ML = false;bool_ML_On = true;}//左手摇杆leftcontroller.TryGetFeatureValue(CommonUsages.primary2DAxis, out joystickleft);//显示摇杆的Vector2数据Image_JSL.transform.localPosition = joystickleft;Text_JSL_x.text = joystickleft.x.ToString();Text_JSL_y.text = joystickleft.y.ToString();//左手A键按下if (bool_AL && bool_AL_On){bool_AL_On = !bool_AL_On;GetHandleLeftADown();}//左手A键按住if (bool_AL){GetHandleLeftA();}//左手B键按下if (bool_BL && bool_BL_On){bool_BL_On = !bool_BL_On;GetHandleLeftBDown();}//左手B键按住if (bool_BL){GetHandleLeftB();}//左手Trigger键按下if (bool_TL && bool_TL_On){bool_TL_On = !bool_TL_On;GetHandleLeftTDown();}//左手Trigger键按住if (bool_TL){GetHandleLeftT();}//左手Grip键按下if (bool_GL && bool_GL_On){bool_GL_On = !bool_GL_On;GetHandleLeftGDown();}//左手Grip键按住if (bool_GL){GetHandleLeftG();}//左手Menu键按下if (bool_ML && bool_ML_On){bool_ML_On = !bool_ML_On;GetHandleLeftMDown();}//左手Menu键按住if (bool_ML){GetHandleLeftM();}//左手JoyStickif (joystickleft.x > 0.5f){}if (joystickleft.x < -0.5f){}if (joystickleft.y > 0.5f){}if (joystickleft.y < -0.5f){}}}//右手A键按下private void GetHandleRightADown(){int_AR++;Text_AR.text = int_AR.ToString();}//右手A键按住private void GetHandleRightA(){int_AR++;Text_AR.text = int_AR.ToString();}//右手B键按下private void GetHandleRightBDown(){int_BR++;Text_BR.text = int_BR.ToString();}//右手B键按住private void GetHandleRightB(){int_BR++;Text_BR.text = int_BR.ToString();}//右手T键按下private void GetHandleRightTDown(){int_TR++;Text_TR.text = int_TR.ToString();}//右手T键按住private void GetHandleRightT(){int_TR++;Text_TR.text = int_TR.ToString();}//右手G键按下private void GetHandleRightGDown(){int_GR++;Text_GR.text = int_GR.ToString();}//右手G键按住private void GetHandleRightG(){int_GR++;Text_GR.text = int_GR.ToString();}//右手M键按下private void GetHandleRightMDown(){int_MR++;Text_MR.text = int_MR.ToString();}//右手M键按住private void GetHandleRightM(){int_MR++;Text_MR.text = int_MR.ToString();}//左手A键按下private void GetHandleLeftADown(){int_AL++;Text_AL.text = int_AL.ToString();}//左手A键按住private void GetHandleLeftA(){int_AL++;Text_AL.text = int_AL.ToString();}//左手B键按下private void GetHandleLeftBDown(){int_BL++;Text_BL.text = int_BL.ToString();}//左手B键按住private void GetHandleLeftB(){int_BL++;Text_BL.text = int_BL.ToString();}//左手T键按下private void GetHandleLeftTDown(){int_TL++;Text_TL.text = int_TL.ToString();}//左手T键按住private void GetHandleLeftT(){int_TL++;Text_TL.text = int_TL.ToString();}//左手G键按下private void GetHandleLeftGDown(){int_GL++;Text_GL.text = int_GL.ToString();}//左手G键按住private void GetHandleLeftG(){int_GL++;Text_GL.text = int_GL.ToString();}//左手M键按下private void GetHandleLeftMDown(){int_ML++;Text_ML.text = int_ML.ToString();}//左手M键按住private void GetHandleLeftM(){int_ML++;Text_ML.text = int_ML.ToString();}
}

UnityXR手柄按键输入相关推荐

  1. linux模拟手柄输入,linux下如何模拟按键输入和模拟鼠标

    查看/dev/input/eventX是什么类型的事件, cat /proc/bus/input/devices 设备有着自己特殊的按键键码,我需要将一些标准的按键,比如0-9,X-Z等模拟成标准按键 ...

  2. html如何把三个按键放一起_winkawaks使用手柄按键玩游戏的教程-winkawaks街机模拟器用手柄攻略...

    Android版iPhone版PC版 Android版 winkawaks使用手版本:版 / 大小: 9.8MBhttp://30tqyb.com/zuixinban/1504480.html 查看详 ...

  3. Unity VR:关于如何捕捉VR手柄按键

    背景: 接收手柄按键信息是游戏必备操作,而VR设备信号的获取也存在多种方式.传统方法一般是通过InputDevice类来识别获取,根据情况也可以有更简单粗暴的方法,我这里先记录一下自己的小小总结. 软 ...

  4. adb 输入回车命令_adb命令模拟按键输入keycode

    例子: //这条命令相当于按了设备的Backkey键 adb shell input keyevent 4 //可以解锁屏幕 adb shell input keyevent 82 //在屏幕上做划屏 ...

  5. Unity+Pico 手柄按键控制

    一.定义手柄按键API 1.InputDevices.GetDeviceAtXRNode,通过XRNode获取对应的设备: 2.XRNode是一个枚举类型,包含LeftEye.RightEye.Cen ...

  6. stm32 工业按键检测_「正点原子STM32Mini板资料连载」第七章 按键输入实验

    1)实验平台:正点原子STM32mini开发板 2)摘自<正点原子STM32 不完全手册(HAL 库版)>关注官方微信号公众号,获取更多资料:正点原子 第七章 按键输入实验 上一章,我们介 ...

  7. STM32 基础系列教程 2 - GPIO 按键输入

    前言 学习stm32 GPIO 的使用,实现简单的按键输入功能,用按键的高低来控制LED的亮灭! 示例详解 基于硬件平台: STM32F10C8T6最小系统板, MCU 的型号是 STM32F103c ...

  8. linux键盘设置的文件在哪个文件夹,「正点原子Linux连载」第十五章按键输入试验...

    原标题:「正点原子Linux连载」第十五章按键输入试验 第十五章按键输入试验 前面几章试验都是讲解如何使用I.MX6U的GPIO输出控制功能,I.MX6U的IO不仅能作为输出,而且也可以作为输入.I. ...

  9. 判断按键值_ALIENTEK 阿波罗 STM32F767 开发板资料连载第七章 按键输入实验

    1)实验平台:alientek 阿波罗 STM32F767 开发板2)摘自<STM32F7 开发指南(HAL 库版)>关注官方微信号公众号,获取更多资料:正点原子 第七章 按键输入实验 上 ...

最新文章

  1. c#中out和ref的使用区别 [转]
  2. 系统集成项目管理工程师-项目沟通管理笔记
  3. 有简易通用权限管理后台的快速C# ASP.NET开发的例子应用程序卖给了曾长期开发JAVA银行程序的大哥...
  4. HALCON示例程序find_pads.hdev通过fit_rectangle2_contour_xld绘制精准轮廓
  5. artDialog对话框在PHP下的简单应用-artDialog弹出层篇
  6. springcloud -zuul(2-执行流程及源码)
  7. iOS DLNA
  8. Cortex字库文件使用
  9. 在Vue+springBoot环境中如何实现单点登录(SSO)
  10. 雷达人体存在感应器,人体感知控制应用,为客户提供真实的感知方案
  11. 智方8000系进销存管理系统 v11.29 绿色
  12. 正则表达式匹配以xx开头以xx结尾
  13. ESP8266-Arduino编程实例-OPT3001数字环境光传感器
  14. 腾讯微信支付2020暑期实习二面、三面面经
  15. Len和lenB的区别
  16. MW6MaxiCode ACX溢出
  17. 华为nova7se能云闪付吗_华为nova7se活力版和华为nova7区别
  18. Android ocr识别文字介绍(文字识别)
  19. 研祥计算机U盘启动,研华工控机怎么设置u盘启动_研华工控机U盘引导方法
  20. C++ 最简真分数(九度OJ 1465)

热门文章

  1. 正点原子Linux阿尔法开发板4.3 寸多点电容触摸屏测试问题
  2. H5 移动端调取手机相机或相册
  3. Prompt是什么_揭秘Prompt:大模型时代的关键技术与实践应用
  4. 解决el-radio-group进行表单校验时首次不生效问题
  5. 20-30岁的青春年华,每一步都算数
  6. 基于Lucene3.5.0如何从TokenStream获得Token
  7. IDEA怎么设置离线工作模式
  8. Spring的注解@Qualifier用法
  9. 7-6 N皇后 (28分)
  10. 元宇宙游戏开发公司 区块链传奇游戏开发