I really like this system, however there is an issue I noticed as InputBinding
does not have an option for MouseMovement
or MouseDelta
, so it is not possible to bind the mouse in those bindings. While this is not normally an issue, it means developers have to manually add support for something like Mouse Steering
and other analog controls with the mouse as opposed to it being a feature that is possible automagically via InputBinding
.
It also does not support modifier key lists, so you cannot bind an action in a way where holding Alt and moving the mouse can allow you to control something else, like the movement of the crane on a vehicle, or you need to press certain keys to activate items on the first spell bar in an MMO, and Shift
+Key
or Ctrl
+Key
for the second and third spell bars. You would have to handle modifiers separately.
What I would really like is for the system to accept essentially any kind of input anywhere, and where applicable, you can modify the value so it fits, such as mapping only +Y or +X on a joystick to an input, and -X or -Y to another (independent up, down, left, and right mappings), and for mouse settings to have the option to be relative to where the input began, relative to absolute coordinates, deltas, or also to lock or unlock the mouse. Essentially, every bind would behave as a Vector2
bind, and you can keep boolean states, Pressed/Released, and whatnot regardless of the setting. You would just use whatever properties you needed for the particular input. It would also be necessary to add options to re-bind joystick inputs, i.e. if you wanted to swap X and Y axis. I would also appreciate a way to calibrate joystick inputs through InputBinding, for example, calibrating/setting a lower and upper deadzone, and the ‘upward’ direction. That way all joystick input bindings can be automatically adjusted without developer intervention.
Another issue is that there is no way to configure the behavior of stacking binds. For example, if a player presses both the primary and secondary bindings for an input, letting go of either button will set the state back to 0.0
, which may be suboptimal in cases where you want the state change to occur only when all binds are not pressed, or if you want a specific behavior like Snap Strafing
where pressing A
or D
while the opposite key is held down would force the latest input state as opposed to stalling at 0.0
.
This, and hopefully a Input Bindings
screen in the Roblox Menu would help tremendously, hopefully created based on hierarchy, so you could have this InputContext
structure and get an appropriately structured Bindings interface:
Player Input
|_ Movement
|___ Walk
|___ ...
|_ Camera
|___ Camera Angle
|___ ...