我正在开发一个节奏游戏,并且想让它与吉他英雄控制器兼容。

使用遗留输入系统,我可以读取触碰的键(按钮)但是,并不能读取弹奏的效果。我已经测试了我的吉他,于是知道这是一个设备的问题。然而,我已经尝试用Xplorer吉他控件(适用于Xbox 360),看是否有所不同。我的Unity版本是2022。

我的问题是:

-我的当前版本中有没有办法让其正常工作?如果是的话,如何实现?

-在不同版本的Unity中,是否会更好地工作?

-在Unity中有没有更容易使用的吉他控制器?

以下是我的代码:

private void 
Start
()
{
    _prevStrum = Input.GetAxisRaw("5th Axis");
}

private void 
Update
()
{
    // 按钮
    if (Input.GetKeyDown(KeyCode.JoystickButton0)) OnGreen?.Invoke();
    if (Input.GetKeyDown(KeyCode.JoystickButton1)) OnRed?.Invoke();
    if (Input.GetKeyDown(KeyCode.JoystickButton3)) OnYellow?.Invoke();
    if (Input.GetKeyDown(KeyCode.JoystickButton2)) OnBlue?.Invoke();
    if (Input.GetKeyDown(KeyCode.JoystickButton4)) OnOrange?.Invoke();

    float strum = Input.GetAxisRaw("5th Axis");
    float delta = strum - _prevStrum;

    if (_strumArmed)
    {
        if (delta >= _strumSensitivity) // > { OnStrumDown?.Invoke(); _strumArmed = false; }
        else if (delta <= -_strumSensitivity) { OnStrumUp?.Invoke();   _strumArmed = false; }
    }

    // 重新激活一次当值变得稳定(delta又开始飘忽不安)时
    if (!_strumArmed && Mathf.Abs(delta) < 0.05f)
    {
        _strumArmed = true;
    }

    _prevStrum = strum;
}

(未知部分请在问题中补充)