首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在VRTK中检测控制器输入

在VRTK中检测控制器输入
EN

Stack Overflow用户
提问于 2017-01-31 16:36:50
回答 1查看 6.1K关注 0票数 0

如果我在错误的地方写作,我对此感到很抱歉--让我知道,我会移动/删除这个评论。

目前,我在使用VRTK时有检测控制器输入的问题。

例如,当两个对象发生冲突时,我希望能够检测到控制器上按下了哪些按钮,但似乎无法确定我如何做到这一点。

此外,我还实现了交互使用功能,但我很难解决如何让两个按钮执行不同的操作。

例如:

一旦我用简单的指针抓取一个对象,我希望一个按钮使对象更接近,另一个按钮将对象移开,但我只实现了一个或另一个。

有什么建议吗?我到处找过文档、例子和谷歌,似乎什么都找不到。任何帮助都将不胜感激!把我的头发拔出来!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-01 13:16:53

您可以在InteractableObject:interactableobject#section-grabbed-1上使用InteractableObject方法

或者您可以在ControllerGrabInteractableObject脚本上使用InteractGrab事件:interactgrab#section-class-events

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

然后,您可以使用ControllerEvents按钮bools在按下按钮时做一些事情。因此,包含此内容的脚本位于交互抓取脚本旁边的控制器脚本别名游戏对象上:

代码语言:javascript
复制
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
    }
  }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41962705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档