2

我开始使用 SteamVR 动作驱动输入系统版本:2.3.2 (sdk 1.4.18)。我为每个控制器附加了一个类似于 Steam 版本的激光指示器脚本。现在,当我按下触发器时,两个脚本都会收到挤压动作。嗯,他们当然会。那么如何确定挤压是否来自我的控制器,以确保我只对此做出响应?

我已经看过SteamVR_Input_Sources参数了。它总是显示“任何”,所以这无济于事。

也许有一个选项可以过滤您希望接收的控制器消息或确定谁调用了该操作的方法......?

4

2 回答 2

1

您可以订阅这样的操作

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);
}
于 2019-08-18T15:26:21.677 回答
0

如果你去 windows 并打开 SteamVR 输入实时视图,你可以得到这个菜单

在此处输入图像描述

此菜单将显示哪个控制器正在接收操作

于 2019-08-18T14:59:06.143 回答