How do I change it so the character speed is not based on frame rate? (Auto-Run system)

You’re feeding in your speed into a scale value. Scale values are normally a value between 0.0 and 1.0 (1.0 being the “max speed”).

I’m currently creating an infinite runner game, which requires the character to constantly run forward - I currently have it set up but I’ve realised that this is FPS dependant. I also have a speed meter using UMG, which shows the variable speed, which should be flat.

Image of the blueprint below.

Any help would be appreciated on fixing this issue. Thanks.

You could do two things:

Change the Scale Value input to 1.0.

Then go into defaults and change “Max Walk Speed” to whatever your Movement Speed is.

If you don’t have a Max Walk Speed inside of defaults, then reparent your blueprint to Character (File>>Reparent blueprint>>Character). You’ll know have a Movement Component inside of defaults which will let you edit the value of Max Walk Speed.

Now with this done, your character will move forward at this speed (Max Walk Speed * Scale Value).

OR

Manually update the Actor’s location by multiplying the output of GetForwardVector with DeltaTime and MovementSpeed (GetForwardVector*(DeltaTime*MovementSpeed)), and then adding this value onto your Actors location with SetActorLocation (see image below):

Thanks for the replies. That worked perfectly.

My reasoning for not using the Max Speed method was that I want the player to speed up and slow down based on various power-ups / de-buffs etc.

But after reading your reply I realized I could still do this by having the scale value a variable and use values like 0.35 etc.

Much appreciated !

No problem. I’m glad you learnt something new. You could even set the scale to a negative to make the character move backwards!