如何为一个控制器禁用传送 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
}
这就是您在脚本中检查操作的方式。我花了很长时间阅读文档来了解自己。
希望对您有所帮助!
目标是只用一个控制器传送。
应该通过 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
}
这就是您在脚本中检查操作的方式。我花了很长时间阅读文档来了解自己。
希望对您有所帮助!