How to solve Input Action wrong Action Value?

Hello guys!

I am new here and to Unreal Engine. While doing a tutorial I ran into a problem and I can’t seem to find the solution.

I created some Input Actions and set them up in the input mapping.



So my problem is like this. If I follow the tutorial and set the Enhanced Input Action on Started, I get a print of 0.0 instead of 1.0, 2.0, etc.
If I set it on Triggered I get a print of the correct value.
I can’t understand how it can get the right value for Triggered but not for Started.

Any ideas?

1 Like

The nodes connected to the Triggered pin of an IA are called for the duration of the input.

The nodes connected to the Started pin however are only called once when the input is triggered. For them to be triggered again, the button needs to be let go and pressed once more.


Ignore Below

:point_down:

Your action value starts from 0 as it’s a float value that’s supposed to increase as the input action keeps getting triggered until a certain point. So it’s expected for it to be 0 at the beginning of the trigger. It’s still increasing while the input keeps getting triggered, you’re just reading it’s initial value.


Hope this helps! :innocent:

This absolutely should work as is and what we see is set up correctly.

The nodes connected to the Started pin however are only called once when the input is triggered. For them to be triggered again, the button needs to be let go.

Nah, you get the action value immediately. At least as of v5.3.

Any ideas?

@MaikOfAbyss What engine version are you on?

Really? I guess I misremembered that. Thanks for that! I’ll make sure to check for myself when I get to launch my PC.

But, wait… Aren’t action values dependent on the intensity of the input? How can it… how can it see the future :rofl: Anyways I’ll make sure to check, there’s definitely a confusion going on for me. Maybe I mistake it for something different, weird. :thinking:

If you can test it with something else than v5.3… because it definitely does work:

I am expecting a bug since I have no clue how to even reproduce this behaviour…


Aren’t action values dependent on the intensity of the input?

You might be thinking of Actuation Threshold which only matters for analogue input. For keyboard keys, it’s either 0 or 1 and then multiplied by a Scalar. It’s nifty, I’ve been using it since that one time I had it explained.

1 Like

Okay I just tested it for myelf. Yeah I’ve no idea what I was thinking about :rofl: (Oh ok I get what I mistook for, nevermind)

Will do a little investigation for OP’s case. Thanks for correcting that! :star_struck:


Nope I also can’t think of a cause.

Hello, thank you very much for the answers.
I am using version 5.5.1.

What you are showing in your reply and the link to the other post is exactly what I saw in the tutorial.
My problem is that despite doing it like this and checking the blocks several times for mistakes I can’t understand why Started returns 0 for me instead of the scalar value.

I feel that I am missing something or a setting is making things not work properly.

Edit:
Same situation here when using the scroll wheel. It does not work if I link to Started, but works just fine if linked to Triggered.

If Triggered works, so should Started right?

Yes. Do you use this input elsewhere? Grasping at straws here as this is not something that should be happening.

Is there anything special about the way this IMC is handled by the controller? Could your run a clean template and see if you could reproduce it?

So I created a new 3rd person template. Redid the input and the same thing happens. On Triggered I get the good values, on Started I get 0.0.

I feel lost. :slight_smile:

1 Like

Could you clarify how this was done:

  • in a clean template
  • create an Input Action with Axis1D
  • create Input Mapping Context, add the above IA
  • add control bindings, each with a unique scalar modifier
  • added the IMC like so:

Any other steps? Any plugins? Common UI? Any legacy input hiding somewhere:


  • Triggered produces correct Action Values
  • Started produces an Action Value but it’s always 0 rather than the IA binding’s scalar

Is that correct?

Can’t see anything similar in the bug DB so it might be time for:

https://www.unrealengine.com/en-US/support/report-a-bug

Ok so let’s try this again. this time I will start from the 1st person shooter template.

  • in a clean template - 1st Person Shooter
  • create an Input Action with Axis1D:
  • create Input Mapping Context, add the above IA - IMC_Test Created
  • add control bindings, each with a unique scalar modifier
  • added the IMC like so: - Your proposed code was giving error on Get Player Controller so I did it like this.

No additional steps, no other plugins from default, no legacy input hiding in project settings.

With all this, I am getting the same behaviour as before.

  • Triggered produces correct Action Values
  • Started produces an Action Value but it’s always 0 rather than the IA binding’s scalar

I did a lot more pictures but it’s not letting me add them…
I will report this as a bug.

Thank you for the help.

1 Like

Out of sheer curiosity, could you tell what the exact error message was? Probably irrelevant, though. What you have here should work fine.


If anyone feels like chipping in, do tell if you can get it to work with v5.4 / v5.5.

I was able to reproduce this in 5.5.1 using the steps provided above:


[EDIT 1]

Out of curiosity I tried to do it on 5.4, but it prints the correct values on Started. Seems like this is a 5.5 (possibly 5.5.1) issue.

[EDIT 2]

Upgraded the working 5.4 project to 5.5 and it stopped printing the correct values on Started and is now printing 0 instead.

2 Likes

Something along the lines of could not find target referring to the player controller and it was asking me to connect a target.
Now that I think about it I think mine said “Self” instead of “0” as value, maybe I used something wrong.

You probably used the top one:

1 Like

Thank you. Yeah, that is a pretty surprising and worrying bug to be honest.

1 Like

It’s definitely a bug or a wierd change they made, there have been a few other people asking about it.

Edit;

It may be possible for you to just add a pressed trigger and use triggered instead of started. Triggered would fire one time with the correct value, but none of the other pins will be useful.

1 Like

That is what I did in the end. For my specific case Triggered worked but it most likely refreshes the command a few times in the background.

Maybe this bug is related to this commit https://github.com/EpicGames/UnrealEngine/commit/4f82581569d0b7b16c80f7516e4c7aed42314a3f. If an action changes its state from “NONE” to “Triggered”, the TriggerEventInternal property is marked as ETriggerEventInternal::StartedAndTriggered. This commit will temporarily change the source trigger event to Started, and then GetActionValue will return 0, because the trigger event is not Triggered at this moment