【问题标题】:Detect controller input in VRTK检测 VRTK 中的控制器输入
【发布时间】:2017-01-31 16:36:50
【问题描述】:

如果我在错误的地方写错了,我很抱歉 - 请告诉我,我会移动/删除此评论。

我目前在使用 VRTK 时检测控制器输入时遇到问题。

例如,当我在两个对象之间发生碰撞时,我希望能够检测到控制器上按下了哪些按钮,但似乎无法弄清楚如何做到这一点。

另外,我已经实现了交互使用功能,但我正在努力研究如何让两个按钮执行不同的操作。

例如:

一旦我用简单的指针抓取一个对象,我想要一个按钮 把物体拉近,再把它移开,但我只有 设法实现其中之一。


有什么建议吗?我在文档、示例和谷歌中到处找,似乎找不到任何东西。任何帮助将非常感激!把我的头发拉出来!

【问题讨论】:

标签: vrtk


【解决方案1】:

您可以在 InteractableObject 上使用Grabbed方法:https://vrtoolkit.readme.io/docs/vrtk_interactableobject#section-grabbed-1

或者您可以在 InteractGrab 脚本中使用 ControllerGrabInteractableObject 事件:https://vrtoolkit.readme.io/docs/vrtk_interactgrab#section-class-events

或者您可以有一个更新例程并检查控制器上的grabbed 状态,执行GetGrabbedObject() != null(检查控制器是否抓取了一个对象,如果它为空则没有抓取)。

然后您可以使用 ControllerEvents 按钮布尔值在按下按钮时执行某些操作。所以一个包含这个的脚本位于交互抓取脚本旁边的控制器脚本别名游戏对象上:

void Update() {
  if (GetComponent<VRTK_InteractGrab>().GetGrabbedObject != null) {
    var controllerEvents = GetComponent<VRTK_ControllerEvents>();
    if (controllerEvents.IsButtonPressed(VRTK_ControllerEvents.ButtonAlias.Trigger_Press) {
        //Do something on trigger press
    }

    if (controllerEvents.IsButtonPressed(VRTK_ControllerEvents.ButtonAlias.Grip_Press) {
        //Do something on grip press
    }
  }
}

【讨论】:

    猜你喜欢
    • 2018-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多