如何为一个控制器禁用传送 Steam VR/Unity

How to disable teleport Steam VR/Unity for one controller

目标是只用一个控制器传送。

应该通过 Action Sets 完成还是可以通过 Event Trigger 完成? 我在 Hand 脚本中也找不到与控制器相关的任何特定内容。

使用 Action Sets 我应该使用 per hand 选项并自定义哪些设置?那么,如何在 Inspector 中创建 I 字段?

非常感谢!

尝试获取对您的控制器 SteamVR_Behaviour_Pose 组件的引用,然后检查它是否是您要用于传送的控制器。 SteamVR_Input_Sources是一个用于识别您的 vive 硬件的枚举。

public SteamVR_Behaviour_Pose pose;

if(pose.inputSource == SteamVR_Input_Sources.LeftHand)
{
    //do stuff
}

小心点。我不太记得了,但我认为这可能会导致 NullReferenceException 如果您尝试访问的硬件未连接。

正如您已经想到的那样,您也可以使用 ActionSets 并为双手使用不同的动作。 应该也可以,我只是没试过。

作为奖励:

public SteamVR_Action_Boolean action = SteamVR_Input.GetBooleanAction("YourActionName");

if (action.GetStateUp(pose.inputSource))
{
    //do even more stuff
}

这就是您在脚本中检查操作的方式。我花了很长时间阅读文档来了解自己。

希望对您有所帮助!