1.9 KiB
title | date | weight |
---|---|---|
Input | 2021-01-23T16:39:09-08:00 | 2 |
All input-related information can be retrieved through the Inputs
.
This class is automatically updated with input information and a reference to it can be retrieved from your Game
subclass.
Buttons
There are four properties that buttons can have, and these apply to keyboard, mouse, and gamepad inputs.
IsPressed
means that the button was pressed this frame.
IsHeld
means that the button has been held down for at least two frames.
IsDown
means that the button was pressed or held on this frame.
IsReleased
means that the button is not currently being pressed.
If you wanted to check if the A button on Gamepad 0 was pressed this frame, you would do this:
if (Inputs.GetGamepad(0).A.IsPressed)
{
// do stuff
}
If you wanted to check if the right mouse button was not pressed, you could do this:
if (Inputs.Mouse.RightButton.IsReleased)
{
// do stuff
}
You can look up keyboard key states with the Keycode
enum. For example:
if (Inputs.Keyboard.IsDown(Keycode.S))
{
// do stuff
}
would tell you that the S key is currently down.
Mouse Input
In addition to the mouse buttons, there are two kinds of positional information: window-relative position and per-frame deltas.
var mouseX = Inputs.Mouse.X;
var deltaMouseY = Inputs.Mouse.DeltaY;
RelativeMode
hides the mouse and does not update the position of the mouse while still returning movement deltas.
This is ideal for creating FPS-style controls. To enable it, simply do:
Inputs.Mouse.RelativeMode = true;
Gamepad Input
MoonWorks assumes your gamepad has a left stick, a right stick, and two triggers. The stick axes are represented in the range [-1f, 1f] and the trigger axes in the range [0f, 1f];
var leftStickHorizontal= Inputs.GetGamepad(0).LeftX;
var rightStickVertical = Inputs.GetGamepad(0).RightY;
var leftTrigger = Inputs.GetGamepad(0).LeftTrigger;