Rebind - Excluding Certain Keys
Hello,
I've been working on a rebind system for my game's input system. I'm only allowing the player to rebind "action" controls (jump, melee, shoot, etc), but not the movement. I have both the WASD and the Arrow Key options enabled for movement, so the player can use whichever they prefer. I also want to prevent the player from rebinding Escape (pause button).
So, my problem is that I don't know how to prevent the player from rebinding a movement key when rebinding a new input. To my rebinding code, I added:
 .WithControlsExcluding("Mouse")
                     .WithControlsExcluding("Gamepad")
                     .WithControlsExcluding("Joystick")
                     .WithControlsExcluding("<keyboard>/escape")
                     .WithControlsExcluding("<keyboard>/w")
                     .WithControlsExcluding("<keyboard>/a")
                     .WithControlsExcluding("<keyboard>/s")
                     .WithControlsExcluding("<keyboard>/d")
                     .WithControlsExcluding("<keyboard>/upArrow")
                     .WithControlsExcluding("<keyboard>/downArrow")
                     .WithControlsExcluding("<keyboard>/leftArrow")
                     .WithControlsExcluding("<keyboard>/rightArrow")
Now, this does prevent other devices from being rebinded (mouse, gamepads and joysticks). However, when I try to rebind one of the excluded keyboard keys, instead of doing nothing, the game will rebind the selected control to "Any Key".
Is there a way I can prevent this? For it to not rebind the key at all if one of these keys is pressed, and instead switch on a condition? For example: If the player tries to rebind a movement key, it won't rebind at all, but makes the player rebind again, but also sets a boolean to true. (I wouldn't mind being able to do this for the excluded devices too)
Here's my rebinding code in full:
 if (changing)       //If a button is being rebinded
             {
                 rebindingOperation = playerControls.GetComponent<PlayerInput>().actions["Shoot"].PerformInteractiveRebinding(0)
                     .WithControlsExcluding("Mouse")
                     .WithControlsExcluding("Gamepad")
                     .WithControlsExcluding("Joystick")
                     .WithControlsExcluding("<keyboard>/escape")
                     .WithControlsExcluding("<keyboard>/w")
                     .WithControlsExcluding("<keyboard>/a")
                     .WithControlsExcluding("<keyboard>/s")
                     .WithControlsExcluding("<keyboard>/d")
                     .WithControlsExcluding("<keyboard>/upArrow")
                     .WithControlsExcluding("<keyboard>/downArrow")
                     .WithControlsExcluding("<keyboard>/leftArrow")
                     .WithControlsExcluding("<keyboard>/rightArrow")
                     .OnMatchWaitForAnother(0.1f)
                     .OnComplete(operation => RebindComplete()).Start();
                 changing = false;       //Ensure the rebinding process doesn't repeat
             }
Is there also a way to rebind certain actions manually through script, without the player pressing something? When I create a way to rebind gamepads inputs, I plan to link gamepad and joystick inputs together (i.e. if one action is rebinded to Button South on a Gamepad, it'll automatically rebind the Joystick binding of that same action to button3 as well.
Thanks in advance.
Your answer
 
 
             Follow this Question
Related Questions
Input keys not working ! please help me,Can't use input keys ! please help me ! 0 Answers
How to get the keyboard to work with Voice Over on iOS? 0 Answers
Custom keyboard layout for mobile game. 1 Answer
How does Input.anyKey work? 0 Answers
Is it possible to get input from bluetooth keyboard on iOS? 0 Answers
 koobas.hobune.stream
koobas.hobune.stream 
                       
               
 
			 
                