在VRTK中检测控制器输入

时间:2017-01-31 16:36:50

标签: vrtk

我对此有些新意,如果我写错了地方,我很抱歉 - 让我知道,我会移动/删除此评论。

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

例如,当我在两个对象之间发生碰撞时,我希望能够检测到控制器上按下的按钮,但似乎无法理解我是如何做到的。

另外,我已经实现了Interact Use功能,但我很难弄清楚如何让两个按钮执行不同的操作。

例如:

  

一旦我用简单的指针抓住一个对象,我想要一个按钮   将物体拉得更近,另一个物体移开它,但我只是   设法实现了一个或另一个。

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

1 个答案:

答案 0 :(得分: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

或者你可以有一个Update例程并检查控制器上的grabbed状态是否为GetGrabbedObject() != null(它检查控制器是否有一个对象被抓取,如果它是null,那么一个isn& #39; t抓住了。

然后你可以使用ControllerEvents按钮bools在按下按钮时执行某些操作。因此,一个带有此脚本的脚本位于交互式抓取脚本旁边的控制器脚本别名gameobject上:

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
    }
  }
}
相关问题