首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取VRTK输入以在动画控制器中设置值

获取VRTK输入以在动画控制器中设置值
EN

Stack Overflow用户
提问于 2018-04-10 18:56:49
回答 1查看 462关注 0票数 0

(我已经学习了VRTK中的教程002,以便在右控制器和左控制器上使用自定义触发器事件。它确实起作用了,但不是为了我想要的。)我有一个角色实例化从一个预制与他自己的动画控制器。我给他附加了我自己的“动画脚本”,当我按下按钮0,1,2,3时做手势……它正在工作,它就是这样工作的。

void Update()

代码语言:javascript
复制
   {
       // LEFT HAND //
       if (Input.GetKey(KeyCode.Keypad0))
           m_Animator.SetInteger("HandGestureLeft", 0); // FIST
       else if (Input.GetKey(KeyCode.Keypad1))
           m_Animator.SetInteger("HandGestureLeft", 1); // PALM
       else if (Input.GetKey(KeyCode.Keypad2))
           m_Animator.SetInteger("HandGestureLeft", 2); // POINT

现在,我想从我的VR控制器按钮输入,而不是0.1.2.3键盘。我了解到VRTK有一些功能可以做到这一点。所以我从002示例场景中进入"VRTK_ControllerEvents_ListenerExample脚本“,并将脚本放在左侧和右侧控制器(它们在VRTK游戏对象场景中)(而不是在我的预制化身上,因为如果我不再做任何工作,002场景脚本必须在VRTK实例化的控制器上,正如教程所说的那样)。我可以把动画放在里面,让它们工作。但它们只适用于我的预制,如果我已经把它放在场景中,而不是实例化它。所以作为一个玩家,我不能让我的手势工作,因为当我点击play时,我必须实例化我的角色才能让我的游戏工作(我的默认脚本做得很好,当我按下0,1,2,3...键,因为我不需要把它放在手控器上,我可以把它放在我的预制件上)。

所以我有一个问题,他们可能是我所看到的两个解决方案。我可能会直接在我的旧“动画脚本”中调用VRTK控制器函数。所以它看起来可能是这样的:

if (Input.GetKey(KeyCode.Keypad0))

代码语言:javascript
复制
           m_Animator.SetInteger("HandGestureLeft", 0); // FIST

插入if (GetComponent().TriggerPressed)==true) (但它告诉我TriggerPressed不可用) m_Animator.SetInteger("HandGestureLeft",0);// FIST

(但我不知道如何从VRTK正在收听的地方抓取VR控制器输入)

或者有一种方法可以从左控制器和右控制器中调用"VRTK_ControllerEvents_ListenerExample“脚本中的预置AnimatorController组件。但在这里,我也不知道如何调用预制组件,我只能调用AnimatorControllerComponent,如果我的阿凡达预制已经在现场。

最后,我所需要的就是从我的预置脚本中检查leftcontroller或rightcontroller是否正在按下触发器。就像"Input.GetKey(KeyCode.Keypad0)“一样,但是使用了VRTK的方式来获取触发器输入。

我完全迷路了,有人能帮帮我吗?

这里有两张图片。现在我的工作代码看起来像这样::https://vrtoolkit.slack.com/files/UA39CMQRF/FA3BD4YD6/code.png "Code0“:https://vrtoolkit.slack.com/files/UA39CMQRF/FA3BD6DR6/code1.png "Code1”

EN

回答 1

Stack Overflow用户

发布于 2018-04-16 20:05:09

好了,我终于找到了。链接如下:

代码语言:javascript
复制
if(RightHand.GetComponent<VRTK_ControllerEvents>().IsButtonPressed(VRTK_ControllerEvents.ButtonAlias.GripPress) == true)
{
    m_Animator.SetInteger("HandGestureLeft", 0);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49751864

复制
相关文章

相似问题

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