Features
Okay, so why do you need an input system? If you ever wanted your player to move right with multiple inputs you did something like this:
var right = keyboard_check(vk_right) or keyboard_check(ord("D")) or gamepad_button_check(0, gp_padr) or gamepad_axis_value(0, gp_axislh) > 0;
Thats pretty long isn’t it! Well with this input system you could do this:
var right = inputCheck([vk_right, "d", gp_padr, gp_axislr]);
Read more about the inputCheck()
function here.
But we can go a step further with this system. Imagine that you want your player to do the following: move right and left, jump and shoot. For that, you could create a new InputSystem that stores a set of inputs in categories and checks them automatically for you. Here is an example:
// Create event in_sys = new InputSystem({ right: [vk_right, "d", gp_padr, gp_axislr], left: [vk_left, "a", gp_padl, gp_axisll], jump: [vk_up, "w", gp_a], shoot: [vk_space, gp_shoulderrb, gp_x] }); // Step event var input = in_sys.check(); if (input.right.down) x += 4; if (input.left.down) x -= 4; if (input.jump.pressed) y -= 10; if (input.shoot.down) shoot();
As you can see first you create a new InputSystem with the categories and inputs. Then you can call the InputSystem’s check method which will check if any of the inputs are pressed. After that you can get the inputs in three ways:
.down - Returns
true
continuously if any of the inputs are currently held down.pressed - Returns
true
only at the moment when any of the inputs are pressed.released - Return
true
only at the moment when the input is released
Read more about the InputSystem()
here.
- The system contains a lot more useful stuff. Here is a list of what else it can do:
Getting the last gamepad input pressed similar to
keyboard_key
Getting the last input pressed from any type
Getting the type of any input
Turning an input into a string (good for drawing and debugging)
Drawing inputs with nice-looking icons
Replacing
ord(“X”)
with“x”
Replacing
gamepad_axis_value()
with new constants likegp_axislr
Checking gamepad axis inputs as pressed
Saving and loading Input Systems in one line
More vk constants