WebVR开发教程——玩转Gamepad手柄

本文是关于WebVR中Gamepad手柄开发的教程,介绍了3-DoF和6-DoF手柄的区别,以及如何利用Gamepad API进行交互。内容包括传感器事件、按钮事件和控制单元事件的处理,重点讲解了gamepad.buttons、gamepad.axes和gamepad.pose等关键属性,用于实现VR场景中的按钮点击、摇杆滑动和位置追踪等交互功能。
摘要由CSDN通过智能技术生成


VR Gamepad手柄

现在大部分VR搭配gamepad手柄,用户通过手持手柄可以与虚拟场景进行交互。
就如headset头盔一样,gamepad手柄也有3-DoF和6-DoF的两种类型:

  • 3-DoF如daydream controller,只支持方向追踪,于是google推荐采用laser激光笔进行交互。
  • 6-DoF如Oculus touch,可以进行方向和位置追踪,因此可以很好的模拟手臂的动作。

相比headset传感器输入产生的交互,gamepad还多了各种输入元件,如按钮、touchpad触控板或thumbstick手摇杆等。
于是,根据手柄输入硬件又可将gamepad事件分为三类:

  • A. 传感器事件:由传感器对手柄进行物理追踪,如激光笔交互;
  • B. 按钮事件:通过点击按钮产生的交互行为;
  • C. 控制单元事件:由thumbstick, touchpad输入产生,如swipe滑动来翻页等。

  • Gamepad API

    Gamepad API是一个HTML5接口,让开发者可以通过js访问游戏手柄,使用Gamepad API的第一步是获取gamepad实例。

典型的Gamepad构造
一个典型的gamepad一般都会有button按钮和axes control控制单元,而VR gamepad则是在前两者的基础上,加上对传感器的支持。

Gamepad
属性 说明
id string类型,包含手柄的标识信息。
connected bool类型,反映手柄是否处于连接状态
buttons 返回GampadButton对象数组,即手柄上的所有可用按钮
axes 返回double类型数组,数组元素为手柄控制元件上各轴向数值
pose 返回一个GamepadPose对象,包含手柄的方向和位置信息

获取headset实例需要调用navigator.getVRDisplays()方法,同样,获取一个手柄的实例,则是调用navigator.getGamepads()方法,它返回一个gamepads数组。
一旦有手柄连接上,gamepads数组将产生有效的gamepad对象,否则,只能是null。

function getGamepad(id)
  const gamepads =
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值