🌊

【解決】UnityのInputActionを上書き

2022/12/10に公開

参考

https://docs.unity3d.com/Packages/com.unity.inputsystem@1.0/api/UnityEngine.InputSystem.InputBinding.html#properties

https://gamedev65535.com/entry/unity_inputsystem_rebinding/

解決法

ポイントは

●SwitchCurrentActionMapでいったん別のマップに切り替えてから行うこと

●new InputBindingの中で

  • 不必要ななことをしないこと(nameを指定したらダメになった)
  • overridePath, overrideProcessorsを利用すること

Composite(WASD)みたいなやつの場合、合計5つ分インデックスを占有するみたい。

    void OverrideInput(int index, string processor)
    {
        PlayerInput _playerInput = GameObject.Find("Player").GetComponent<PlayerInput>();
        InputAction _lookAction = _playerInput.actions.FindActionMap("Player").FindAction("Look");

        _playerInput.SwitchCurrentActionMap("Menu");
        _lookAction.ApplyBindingOverride(0, new InputBinding { overridePath="<Mouse>/delta" overrideProcessors = "scaleVector2(x=0.4, y=0.15),invertVector2(invertX=false,invertY=true)" });
        _playerInput.SwitchCurrentActionMap("Player");
    }

Discussion