用HTC手柄模拟器怎么做成美国手遥控器

怎么把xbox360手柄改装成2.4G航模遥控器? - 知乎19被浏览4503分享邀请回答65 条评论分享收藏感谢收起一、关于左右手柄的对应关系
两个手柄和SteamVR_TrackedObject.EIndex是对应的,一个是EIndex.Device2,另一个是EIndex.Device3(有编号的那个)
在场景中手柄先后连入,先后激活的是Controller(right)、Controller(left),并添加SteamVR_TrackedObject组件
二、手柄按键
1 -&菜单键
6 -&系统键(按下后手柄断开连接,再次按下手柄再次连接上)
7 -&扳机键
8 -&握持键
9 -&触摸板键
按键监听方式一:(SteamVR的方式,封装了OpenVR)
通过Device.GetPressDown / GetPressUp / GetPress获取按键事件
按键监听方式二:(OpenVR的方式,偏底层)
通过controllerState.ulButtonPressed & (SteamVR_Controller.ButtonMask.Trigger)获取按键的按下、松开两种状态
注:m_State、m_PrevState分别表示:当前帧状态、前一帧状态
获取按下时,触摸板的值
获取松开时,触摸板的值(这里必须使用前一帧的状态,因为松开时,当前帧的触摸的值为0)
问题:按下时,没有获取到当前帧触摸板的值!
猜测原因:获取值的Update方法在更新状态Update的方法之前执行了,更新状态的Update方法执行后,才能获取触摸板的值
解决方法:如果不想修改脚本执行顺序的话,可以使用LateUpdate
适用于触摸板键
适用于扳机键(和点按类似,只是键程更短)
问题:触摸按下时,没有获取到当前帧触摸板的值!
原因:不明,内部机制需要搞清楚
解决办法:在触摸按下后的第二帧才获取到触摸板的值。
(3)触摸板轴的获取
通过以上两种方式获取的VRControllerState_t,获取触摸板的轴
x = state.rAxis0.x
y = state.rAxis0.y
阅读(...) 评论()新手课堂:详解航拍中的“美国手”及“日本手”
  许多刚刚接触无人机的飞手,想必都从各个渠道看到过诸如“美国手”、“日本手”、“中国手”这样的词汇,那么究竟它们都各自代表了什么含义呢?
  以大疆DJI 精灵Phantom 4为例,初次使用,默认是美国手。其实所谓“美国手”、“日本手”等,更专业的名称应该称作“模式1”、“模式2”以此类推。
  首先是美国手,据称,航空模型刚刚兴起之时,只有一个通道可供控制,于是便用来控制旋转方向,上升下降全凭电机开关与否。只有一个控制摇杆,自然多数人都选择用右手控制。随着技术发展,才加入了油门也就是上升下降的控制,这时便将其分配到了左手的位置。由于这种模式形成最早,于是被称为“模式1”,也由于这些玩家主要位于美国,因此称为“美国手”。
  具体来说,就是遥控器的左摇杆,负责无人机的上升下降、原地顺时针/逆时针旋转;遥控器的右摇杆,负责无人机在水平位置上的前后左右移动。
  其次是“日本手”,与美国手的区别其实并不大,仅在于,将控制无人机上升下降与前进后退,进行了对调。
  也就是,左摇杆负责无人机的前进后退、原地顺时针/逆时针旋转;遥控器的右摇杆,负责无人机的上升下降和左右移动。
  国内有许多有经验的飞手都是日本手,这是由于早期的遥控器多数是日本进口,因此一旦养成了习惯便很难再改回来了。有一些飞手说日本手更适合对于飞行路线有精确要求的飞行任务,但是小编认为,这仅仅是一种使用上的习惯差异而已。
  而中国手,也有人称作“反美国手”,因为其与“美国手”完全相反,遥控器的左摇杆,负责无人机在水平位置上的前后左右移动;遥控器的右摇杆,负责无人机的上升下降、原地顺时针/逆时针旋转。
  那么究竟如何在这几种操作模式中选择呢?我们需要考虑以下两种因素:
  1.先入为主,如果你已经对于无人机上手,并且习惯了一种操作模式,那么应当不要随意去更改,我们应当尽量使自己在飞心中得心应手,才能有更多心思花在如何拍摄美景上。
  2.身边飞手的使用习惯。因为一旦自己操作发生问题,同伴可以直接代为操作,同时,也方便互相交流和切磋,这一点,与购买单反前观察身边朋友是哪个品牌是同样的道理。
  但是你决心已定,或者在尝试许久之后还是无法习惯既定的操作模式,那么以大疆精灵系列无人机为例,是可以在APP中进行修改的,如图所示:
  (AOPA云:刘丹)
  AOPA云——为航空而生
  官网 (更多资讯,全面掌握):
  微信 (更多活动,即时知晓): aopayun
责任编辑:
声明:本文由入驻搜狐号的作者撰写,除搜狐官方账号外,观点仅代表作者本人,不代表搜狐立场。
专属航空爱好者的圈子,航空资料、飞行(无人机、航模)攻略,航展门票...
新会员注册!老会员邀请好友注册!发送帐号到AOPA云微信公众号抢百元红包!
今日搜狐热点htc vive开发入门(三)之手柄功能详解
小kobeVR咨询
原始标题:
1控制器按钮介绍HTC Vive可以在游戏或者视频的时候帮助用户进行辅助操作,不过手柄的使用比较繁琐,比如指示灯的含义,还有手柄灵敏度调节、追踪状态和开机方法很多用户都不甚明了,下面是详细的HTC Vive手柄按键说明。看如下图解释:1.Menu button菜单按钮2.Trackpad&Left触摸板左3.Trackpad&Upt触摸板上4.Trackpad&Right触摸板右5.Trackpad&Down触摸板下6.System button系统按钮7.Trigger扳机8.Grip button握柄按钮9.Trackpad Press按触摸板中心2.使用方法在[CameraRig]物体上添加个子物体代表的个手柄,增加,设置为在[CameraRig]物体上添加,设置左右手柄至此就完成了手柄的集成。3.&手柄检测功能那么接下来详细介绍一下SteamVR_TrackedObject这个脚本:该脚本是加在左右手柄身上的。SteamVR_Controller手柄控制器类:提供了对手柄的操作。先看如下测试脚本:首先声明第7行 变量,然后在中获取组件得到手柄对象。找到15行 获取手柄输入。&if (device.GetTouch(SteamVR_Controller.ButtonMask.Trigger))&{ &&Debug.Log("轻按了扳机键,持续······&}&//这里只有扳机键写了种,其他的不再重复。&//Trigger的触发条件是扳机键没有按到底,此时不会触发。触发时必定触发。 &ButtonMask按键名称类:为按键提供名称。Device 设备类:提供了手柄具体功能,如按下、触摸。4.手柄的震动TriggerHapticPulse:震动,参数为力度。5.系统键//system键 圆盘下面那个键 & &&&&&&&&&&// reserved 为系统保留用来调出系统菜单 因此自己加的功能 没用 &下面的打印不会出现 &&if (device.GetTouchDown(SteamVR_Controller.ButtonMask.System)){& &Debug.Log("不会打印出来不会打印出来}if (device.GetPressDown(SteamVR_Controller.ButtonMask.System)){& &Debug.Log("不会打印出来不会打印出来}&&&6.&ApplicationMenu键&//ApplicationMenu键 带菜单标志的那个按键(在方向圆盘上面) &&&&&&&&&&&//ApplicationMenu键 的和没有区别,触发都要按下去if (device.GetTouchDown(SteamVR_Controller.ButtonMask.ApplicationMenu)){& Debug.Log("按下了 菜单键}if (device.GetPressDown(SteamVR_Controller.ButtonMask.ApplicationMenu)){Debug.Log("用按下了菜单键}7.&Grip键/Grip键 手柄两侧的按键 每个手柄左右各一且功能相同,同一手柄两个键是一个键。 &&&&&&&&&&//Grip键 的和没有区别,触发都要按下去if (device.GetTouchDown(SteamVR_Controller.ButtonMask.Grip)){& Debug.Log("按下了}if (device.GetPressDown(SteamVR_Controller.ButtonMask.Grip)){&Debug.Log("按下了}8.Touchpad键 圆盘交互&&//触摸触发 &&&if (device.GetTouchDown(SteamVR_Controller.ButtonMask.Touchpad)){&Debug.Log("触摸了圆盘&//方法返回一个二维坐标 接触圆盘位置 & && Vector2 cc = device.GetAxis();&//Debug.Log(cc);&// 例子:圆盘分成上下左右 &&&float angle = VectorAngle(new Vector2(1, 0), cc);// Debug.Log(angle);//下 &&&if (angle & 45 && angle & 135){& &Debug.Log("下}//上 &&&if (angle & -45 && angle & -135){Debug.Log("上}//左 & &if ((angle & 180 && angle & 135) || (angle & -135 && angle & -180)){Debug.Log("左}//右 &&&if ((angle & 0 && angle & 45) || (angle & -45 && angle & 0)){&Debug.Log("右}&}//按动触发 &&&if (device.GetPressDown(SteamVR_Controller.ButtonMask.Touchpad)){Debug.Log("按下了圆盘&Vector2 cc = device.GetAxis();Debug.Log(cc);}}以上就是我给大家分享的关于手柄的基本功能实现,有不对的地方还请大家多多指正,给我留言,谢谢!& & & &&
VR资源网整理出品

我要回帖

更多关于 手柄模拟器 的文章

 

随机推荐