Create Input Action #
Create the Input Actions required for your interactions (movement, camera, character Action like jump, fire, etc). Select the value type accordingly.
- Bool or Axis1D for button.
- Axis2D for joystick and free touch.
- Axis1D for Slider or Knob.



Create Input Action Mapping #
Add all created input actions to Input Mapping Context and assign gamepad or mouse/keyboard key. I recommend using gamepad key.

Touch Interface #
Create the layout component required for your interactions (movement, camera, character Action like jump, fire, etc). Fill the accordingly input action.

With Blueprint (in character class) #
- Get Enhanced Input Local Player Subsystem and call Add Mapping Context to use the right Input Mapping Context.
- Get Enhanced Action Event and configure character movement, camera movement and character abilities like jump.
- Test!



With C++ (in character class) #
Begin Play #
In Begin play function, add mapping context. You need to create a UInputMappingContext* variable and expose it to Blueprint.

Setup Player Input Component #
Bind Actions to appropriate function in setup player input component

Functions #
In HandleMove function for example, get the action value and do something with it!
- ActionValue.Get<FVector2D> for Axis2D
- ActionValue.Get<bool> for Bool

