UnityXR手柄按键输入
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手柄按键输入相关推荐
- linux模拟手柄输入,linux下如何模拟按键输入和模拟鼠标
查看/dev/input/eventX是什么类型的事件, cat /proc/bus/input/devices 设备有着自己特殊的按键键码,我需要将一些标准的按键,比如0-9,X-Z等模拟成标准按键 ...
- html如何把三个按键放一起_winkawaks使用手柄按键玩游戏的教程-winkawaks街机模拟器用手柄攻略...
Android版iPhone版PC版 Android版 winkawaks使用手版本:版 / 大小: 9.8MBhttp://30tqyb.com/zuixinban/1504480.html 查看详 ...
- Unity VR:关于如何捕捉VR手柄按键
背景: 接收手柄按键信息是游戏必备操作,而VR设备信号的获取也存在多种方式.传统方法一般是通过InputDevice类来识别获取,根据情况也可以有更简单粗暴的方法,我这里先记录一下自己的小小总结. 软 ...
- adb 输入回车命令_adb命令模拟按键输入keycode
例子: //这条命令相当于按了设备的Backkey键 adb shell input keyevent 4 //可以解锁屏幕 adb shell input keyevent 82 //在屏幕上做划屏 ...
- Unity+Pico 手柄按键控制
一.定义手柄按键API 1.InputDevices.GetDeviceAtXRNode,通过XRNode获取对应的设备: 2.XRNode是一个枚举类型,包含LeftEye.RightEye.Cen ...
- stm32 工业按键检测_「正点原子STM32Mini板资料连载」第七章 按键输入实验
1)实验平台:正点原子STM32mini开发板 2)摘自<正点原子STM32 不完全手册(HAL 库版)>关注官方微信号公众号,获取更多资料:正点原子 第七章 按键输入实验 上一章,我们介 ...
- STM32 基础系列教程 2 - GPIO 按键输入
前言 学习stm32 GPIO 的使用,实现简单的按键输入功能,用按键的高低来控制LED的亮灭! 示例详解 基于硬件平台: STM32F10C8T6最小系统板, MCU 的型号是 STM32F103c ...
- linux键盘设置的文件在哪个文件夹,「正点原子Linux连载」第十五章按键输入试验...
原标题:「正点原子Linux连载」第十五章按键输入试验 第十五章按键输入试验 前面几章试验都是讲解如何使用I.MX6U的GPIO输出控制功能,I.MX6U的IO不仅能作为输出,而且也可以作为输入.I. ...
- 判断按键值_ALIENTEK 阿波罗 STM32F767 开发板资料连载第七章 按键输入实验
1)实验平台:alientek 阿波罗 STM32F767 开发板2)摘自<STM32F7 开发指南(HAL 库版)>关注官方微信号公众号,获取更多资料:正点原子 第七章 按键输入实验 上 ...
最新文章
- c#中out和ref的使用区别 [转]
- 系统集成项目管理工程师-项目沟通管理笔记
- 有简易通用权限管理后台的快速C# ASP.NET开发的例子应用程序卖给了曾长期开发JAVA银行程序的大哥...
- HALCON示例程序find_pads.hdev通过fit_rectangle2_contour_xld绘制精准轮廓
- artDialog对话框在PHP下的简单应用-artDialog弹出层篇
- springcloud -zuul(2-执行流程及源码)
- iOS DLNA
- Cortex字库文件使用
- 在Vue+springBoot环境中如何实现单点登录(SSO)
- 雷达人体存在感应器,人体感知控制应用,为客户提供真实的感知方案
- 智方8000系进销存管理系统 v11.29 绿色
- 正则表达式匹配以xx开头以xx结尾
- ESP8266-Arduino编程实例-OPT3001数字环境光传感器
- 腾讯微信支付2020暑期实习二面、三面面经
- Len和lenB的区别
- MW6MaxiCode ACX溢出
- 华为nova7se能云闪付吗_华为nova7se活力版和华为nova7区别
- Android ocr识别文字介绍(文字识别)
- 研祥计算机U盘启动,研华工控机怎么设置u盘启动_研华工控机U盘引导方法
- C++ 最简真分数(九度OJ 1465)