Using Gamepad with EnhancedInputAction is way too sensitive compared to WASD/Keyboard inputs.

Hi,

So I am trying to make a simple game using a physics ball as character in UE5.3. I created a simple start using this tutorial (https://www.youtube.com/watch?v=J_i6GZbtmwU&list=PLB1vPTdH_CAjZXSs7plFt7bHWMaroywQ3&index=11)

It works almost as intended only for 1 thing. The input of the controller is way too heavy. If I keep the RotationSpeed set to 20, it works decent for the WASD/keyboard input, but it’s way too fast for the Gamepad Joystick. But when you set the speed to 1, WASD doesnt move and the Gamepad works.

Is there a way to change the inputs separately while still using the EnhancedInputActions?

I tried creating separate ones by hand, but found that it might be better to stick with the EnhancedInputs when possible, especially later down the line when more inputs might get added + accessibility for other platforms.


RollingBall_TooFast

if instead of the joystick does the d-pad have a similar effect for you?

under enhanced Input you can have multiple different input actions result in the same function/event call (blueprint execution input pin)
so you could have IA_WASD_Move and IA_Joy_Move which both call small variations on your Move() function/event. where for example your IA_WASD_Move() multiplies the inbound float values by “20” then goes into you expected Move() logic which would normally use the multiple of “1”.

when it comes the the Accessibility options if they are re-mappings inside your application then you can “take care” of that for the proper function.

But, like Steam input, or the consoles remapping, the system is directly lying to your application about what input is being sent. if the user through Steam Input wants to remap WASD to a joystick on their “special gamepad” that Unreal doesn’t natively support your game will receive WASD inputs while they are using a joystick. The inverse might also be true where the PlayStation User can remap the joystick to the D-Pad, they push a the D-Pad-UP and you get a Joystick (0.0, 1.0).

the “good news” is that typical gamepads only have 2 Vector2 joysticks, but then there is VR (I know there was a Unreal Engine wide mod that could force almost any Unreal Engine application to work with a VR headset similar to the platform input remapping)

1 Like

First of all, thanks for your reply!

I do get what you mean, but would you be able to explain how exactly that can be done? I’m a bit of a rookie if it comes to programming/blueprinting gameplay.

maybe it might not be as “difficult” as I was thinking

if you go into your InputMappingContext on the GamePad_Left_Thumstick_2D-Axis: it should have a Modifiers:Scalar

which is acting as a multiplier to the vector output of the User input value, you can either reduce the scalar multiplier on the Thumstick (to something more consistent with the behavior of your WASD/DPad)

or you can add a Modifier:Scalar to the different components of the other things for IA_Move

  • note that W/S are the Y component of the synthetic Vector, and A/D are the X component
    so the Modifier of both W and S should be (1.0, [N], 1.0) and the Modifier for A and D should be ([N], 1.0, 1.0)

you might need to tune both to get what you “want”

2 Likes

Awesome that fixed it!
Changed these Joystick Scalars to 1, and now they have the same sensitivity.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.