Quantcast
Channel: Questions in topic: "keyboard"
Viewing all articles
Browse latest Browse all 605

Rebind - Excluding Certain Keys

$
0
0
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("/escape") .WithControlsExcluding("/w") .WithControlsExcluding("/a") .WithControlsExcluding("/s") .WithControlsExcluding("/d") .WithControlsExcluding("/upArrow") .WithControlsExcluding("/downArrow") .WithControlsExcluding("/leftArrow") .WithControlsExcluding("/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().actions["Shoot"].PerformInteractiveRebinding(0) .WithControlsExcluding("Mouse") .WithControlsExcluding("Gamepad") .WithControlsExcluding("Joystick") .WithControlsExcluding("/escape") .WithControlsExcluding("/w") .WithControlsExcluding("/a") .WithControlsExcluding("/s") .WithControlsExcluding("/d") .WithControlsExcluding("/upArrow") .WithControlsExcluding("/downArrow") .WithControlsExcluding("/leftArrow") .WithControlsExcluding("/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.

Viewing all articles
Browse latest Browse all 605

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>