0

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

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

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

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

例如:

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


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

4

1 回答 1

1

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

或者您可以ControllerGrabInteractableObject在 InteractGrab 脚本中使用该事件: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
    }
  }
}
于 2017-02-01T13:16:53.673 回答