VRTK控制器事件(VRTK_ControllerEvents)

OVERVIEW


控制器脚本是处理游戏控制器发出的事件的。
控制器脚本是附在[camerarig]预制件上并为控制器上的每个按钮添加了事件侦听器(不包括menu按钮,这个按钮事件不能被重写,只用于steam平台)。
当一个控制器按钮被按下的时候,脚本会发出事件来表示按钮已被按下,这就允许其他任何脚本不需要实现任何关于控制器的逻辑就可以监听这个事件。当按钮被松开的时候,同样也会发出事件来表示按钮已经被松开。

INSPECTOR PARAMETERS


  • Point Toggle Button:将激光指针打开/关闭的按钮
  • Point Set Button:从指针的光标位置设置目标标记的操作的按钮
  • Grab Toggle Button:抓取物体的按钮
  • Use Toggle Button:使用物体的按钮
  • UI Click Button:触发UI元素点击事件的按钮
  • Menu Toggle Button:显示游戏菜单界面的按钮
  • Axis Fidelity:在轴变化量敏感度,默认值1,任何高于2的值都会导致过于敏感的结果
  • Triggle Click Threshold:扳机键按下前需要按下的距离水平

CLASS VARIABLES


  • public enum ButtonAlias - 按钮类型
    • Trigger_Hairline - Trigger按钮按下的幅度超过阀值
    • Trigger_Touch - Trigger按钮按下一点点
    • Trigger_Press - Trigger按钮按下一半多
    • Trigger_Click - Trigger按钮点击按下
    • Grip - grip按钮被按下
    • TouchPad_Touch - 触摸板被触摸
    • TouchPad_Press - 触摸板被按下
    • Application_Menu - 应用菜单按钮被按下
    • undefined
  • public bool triggerPressed - 如果trigger按钮被按下超过一半则会返回true,默认是false
  • public bool triggerTouched
  • public bool triggerHairlinePressed
  • public bool triggerClicked
  • public bool triggerAxisChanged
  • public bool applicationMenuPressed
  • public bool touchpadPressed
  • public bool touchpadTouched
  • public bool touchpadAxisChanged
  • public bool gripPressed
  • public bool pointerPressed
  • public bool grabPressed
  • public bool usePressed
  • public bool uiClickPressed
  • public bool menuPressed

CLASS EVENTS


  • TriggerPressed
  • TriggerReleased
  • TriggerTouchStart
  • TriggerTouchEnd
  • TriggerHairlineStart
  • TriggerHairlineEnd
  • TriggerClicked
  • TriggerUnclicked
  • TriggerAxisChanged
  • ApplicationMenuPressed
  • ApplicationMenuReleased
  • GripPressed
  • GripReleased
  • TouchpadPressed
  • TouchpadReleased
  • TouchpadTouchStart
  • TouchpadTouchEnd
  • TouchpadAxisChanged
  • AliasPointerOn
  • AliasPointerOff
  • AliasPointerSet
  • AliasGrabOn
  • AliasGrabOff
  • AliasUseOn
  • AliasUseOff
  • AliasMenuOn
  • AliasMenuOff
  • AliasUIClickOn
  • AliasUIClickOff
  • ControllerEnabled
  • ControllerDisabled

UNITY EVENT


VRTK_ControllerEventsObject添加VRTK_ControllerEvents_UnityEvents组件来允许访问unityevents

  • OnTriggerPressed
  • OnTriggerReleased
  • OnTriggerTouchStart
  • OnTriggerTouchEnd
  • OnTriggerHairlineStart
  • OnTriggerHairlineEnd
  • OnTriggerClicked
  • OnTriggerUnclicked
  • OnTriggerAxisChanged
  • OnApplicationMenuPressed
  • OnApplicationMenuReleased
  • OnGripPressed
  • OnGripReleased
  • OnTouchpadPressed
  • OnTouchpadReleased
  • OnTouchpadTouchStart
  • OnTouchpadTouchEnd
  • OnTouchpadAxisChanged
  • OnAliasPointerOn
  • OnAliasPointerOff
  • OnAliasPointerSet
  • OnAliasGrabOn
  • OnAliasGrabOff
  • OnAliasUseOn
  • OnAliasUseOff
  • OnAliasMenuOn
  • OnAliasMenuOff
  • OnAliasUIClickOn
  • OnAliasUIClickOff
  • OnControllerEnabled
  • OnControllerDisabled

EVENT PAYLOAD


  • uint controllerIndex - 被使用的控制器索引
  • float buttonPressure - 被施加到按钮上的压力的量。0f到1F。
  • Vector2 touchpadAxis - 触摸板被触摸的位置,(0,0)到(1,1)。
  • float touchpadAngle - 触摸板的触摸位置的角度,顶上是0°,地下是180°,以此类推,0°到360°。

CLASS METHODS


GetVelocity()
public Vector3 GetVelocity()
  • Parameters
    • none
  • Returns
    • Vector3 - 一个包含当前现实世界物理控制器速度的3维向量。

这个方法可以获取控制器的在当前现实世界的速度。可以用来确定控制器被晃动的速度和方向。

GetTouchpadAxis()
public Vector2 GetTouchpadAxis()
  • Parameters
    • none
  • Returns
    • Vector2 - 触摸板被触摸的位置信息,从(0,0)到(1,1)。X表示触摸板水平方向,Y表示触摸板垂直方向。
GetTouchpadAxisAngle()
public float GetTouchpadAxisAngle()
  • Parameters
    • none
  • Returns
    • float - 触摸板被触摸角度信息,顶上0°,底下180°,取值0°-360°。
GetTriggerAxis()
public float GetTriggerAxis()
  • Parameters
  • none
  • Returns
  • float - trigger按钮被按下的程度,取值0f到1f。
GetHairTriggerDelta()
public float GetHairTriggerDelta()
  • Parameters
  • none
  • Returns
  • float - trigger按钮从初始位置到当前位置的力度变化值
AnyButtonPressed()
public bool AnyButtonPressed()
  • Parameters
  • none
  • Returns
  • bool - 当有任何按钮被按下的时候返回值为true
IsButtonPressed()
public bool IsButtonPressed(ButtonAlias button)
  • Parameters
  • ButtonAlias button - 检查按钮是否被按下
  • Returns
  • bool - 如果该按钮被按下的话返回值为true

EXAMPLE


例子: VRTK/Examples/002_Controller_EventsVRTK/Examples/Resources/Scripts/VRTK_ControllerEvents_ListenerExample.cs

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • VRTK是由一些大神对SteamVR进行一定的优化后封装出来的便捷快速VR开发工具,下面一步一步来了解这个神插件。...
    砍了那只鸭阅读 7,355评论 3 15
  • Controller Events 脚本用于统一处理Vive手柄发送的事件. Controller Events ...
    游戏开发小Y阅读 7,889评论 2 2
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,593评论 0 17
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,026评论 19 139
  • 你有没有遇见过这样一个人,明明是他先闯进你的世界,却在你日渐上心的时候扬长而去;你在日后漫长的岁月里一边等待一边凋...
    h小半h阅读 230评论 0 0