我正在尝试制作一个可以使用右手触发按钮打开和关闭的手电筒(我正在使用 Oculus Quest 2)。但当我按下扳机时什么也没有发生。
我使用的是unity 2022.2.0f1,我有XR交互工具包(2.1.1)和XR插件管理(4.2.1)。我制作了一个动作图,并使用动作图将玩家输入组件附加到 XR 原点。打开和关闭手电筒的脚本也在 XR 上。我知道有一个 XRI 默认动作图,但当我尝试引用它时,脚本无法识别它,经过一段时间的尝试后,我刚刚制作了一个不同的动作图。
这是我放入脚本中的代码:
public PlayerControls playerActions;
public bool flashlightOn;
public GameObject flashlight;
private void Awake()
{
playerActions = new PlayerControls();
}
private void Start()
{
flashlightOn = false;
}
private void Update()
{
if(playerActions.Player.RightHandTrigger.triggered && flashlightOn == false)
{
Debug.Log("On");
flashlight.SetActive(true);
}
else if (playerActions.Player.RightHandTrigger.triggered && flashlightOn == true)
{
Debug.Log("Off");
flashlight.SetActive(false);
}
}
我完全不知道该怎么做才能让它发挥作用。任何帮助或建议将不胜感激。如果写得不好,我很抱歉,这是我第一次在这里发帖。
我会使用InputActionReference而不是整个playerControl:
public InputActionReference triggerPressedRef;
在检查器中,将“XRI RightHand Interaction/Activate”放入triggerPressedRef。然后,为了避免在更新方法中监听输入,您可以通过这种方式分配操作来输入:
private void Start()
{
triggerPressedRef.action.performed += SwitchFlashLight;
}
private void SwitchFlashLight(InputAction.CallbackContext ctx)
{
flashlightOn = !flashlightOn;
flashlight.SetActive(flashlightOn);
}
如果不起作用,请检查您的 XR 原点是否已正确设置,方法是将其与 XR Interaction Toolkit 给出的预制件进行比较:Assets/Samples/Xr Interaction Toolkit/2.1.1/Starter Assets/Prefabs(确保您在包管理器中导入了入门资源示例)。