我开始使用 SteamVR 动作驱动输入系统版本:2.3.2 (sdk 1.4.18)。我为每个控制器附加了一个类似于 Steam 版本的激光指示器脚本。现在,当我按下触发器时,两个脚本都会收到挤压动作。嗯,他们当然会。那么如何确定挤压是否来自我的控制器,以确保我只对此做出响应?
我已经看过SteamVR_Input_Sources
参数了。它总是显示“任何”,所以这无济于事。
也许有一个选项可以过滤您希望接收的控制器消息或确定谁调用了该操作的方法......?
您可以订阅这样的操作
public void SubscribeToPlayerAction(SteamVR_Action_Boolean action, SteamVR_Action_Boolean.ChangeHandler onAction)
{
action.AddOnChangeListener(onAction, SteamInputSource); //SteamInputSource can be Left Right or Any
}
或者你可以投票
public bool CheckForPlayerAction(SteamVR_Action_Boolean action, ButtonAction buttonState = ButtonAction.PressDown)
{
if (buttonState == ButtonAction.PressDown) return action.GetStateDown(SteamInputSource);
if(buttonState == ButtonAction.IsPressed) return action.GetState(SteamInputSource);
return action.GetStateUp(SteamInputSource);
}