(我已经按照VRTK的教程002,在左右控制器上使用自定义触发事件。它确实有效,但不是我想要的。) 我确实有一个用自己的Animatorcontroller预制件制作的角色。我给他贴了我自己的“动画师脚本”,当我按下按钮0,1,2,3时做手势......它正在工作,它就像那样工作。
void Update()
{
// 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实例化的控制器上,如教程所述)。 我可以将动画放入其中并让它们正常工作。但是如果我把它放在场景中它们只适用于我的预制件,并且不会实现它。所以作为一名运动员,我不能让我的手势发挥作用,因为当我上场比赛时,我必须让我的角色为我的游戏工作(我的默认脚本做得很好,当我按下0,1,2,3 ......因为我不需要在手控制器上使用它,所以我可以在预制件上使用它。
所以我有一个问题,他们可能是我看到的两个解决方案。 我可能直接在我的旧“动画师脚本”中调用VRTK控制器函数。所以它看起来像:
if(Input.GetKey(KeyCode.Keypad0))
m_Animator.SetInteger("HandGestureLeft", 0); // FIST
成 if(GetComponent()。TriggerPressed)== true)(但它告诉我TriggerPressed不可用) m_Animator.SetInteger(“HandGestureLeft”,0); // FIST
(但我不知道如何从VRTK收听的地方获取VR控制器输入)
或者可以通过左右控制器在“VRTK_ControllerEvents_ListenerExample”脚本中调用我的预制AnimatorController组件。但是在这里,我也不知道如何调用预制组件,如果我已经在现场使用我的头像预制件,我只能调用AnimatorControllerComponent。
最后我所需要的是从左侧控制器或右侧控制器按下触发器时检查预制脚本的方法。就像“Input.GetKey(KeyCode.Keypad0)”一样,但用VRTK方式来获取触发输入。
我完全迷失了,有人可以帮帮我吗? :d
这里有两张图片。现在我的工作代码看起来像这样: ![1]:https://vrtoolkit.slack.com/files/UA39CMQRF/FA3BD4YD6/code.png“Code0” ![2]:https://vrtoolkit.slack.com/files/UA39CMQRF/FA3BD6DR6/code1.png“Code1”
答案 0 :(得分:0)
好吧我终于找到了。这是链接:
if(RightHand.GetComponent<VRTK_ControllerEvents>().IsButtonPressed(VRTK_ControllerEvents.ButtonAlias.GripPress) == true)
{
m_Animator.SetInteger("HandGestureLeft", 0);
}