How do I get rid of this really stupid default "feature" in Character Movement?

The way UE4 handles on-the-ground movement by default is completely bewildering and alien to someone who has worked with other engines in the past, but I actually see it as a fun challenge to work around problems within the restrictions of the engine. Sometimes. I don’t know if I’m looking in the wrong place or not, but the ledge “jump off” action is seriously destroying the flow of my game. I don’t even know why this would be a default feature, considering that it would see use in probably 2 or 3 practical applications, but I digress.

Essentially what’s happening, is that I cannot make my character run down a hill at speed without kicking off the “jump off” action. This is not something that would make sense from any gameplay standpoint, nor would it in reality. I understand WHY and WHAT it’s doing, but I cannot for the life of me find any way to temporarily disable it while handling running on the ground. If this is intentional behavior, then it’s pretty poorly implemented, which is surprising coming from the likes of Epic who I see as essentially the gods of port and polish when it comes to stuff like this.

I’m the kind of guy who puts character movement above literally ALL else in games, so I can’t really tell if this is frustrating me for the wrong reasons or not, but WOW this shouldn’t be happening.


Any help would be super appreciated.

Not that I have tried anything like this, but what would happen if you put the gravity value super high? Would that help the character stick to the ground while running?
As for jumping, you could just set the gravity to normal again, then set it again when it lands.

Increase slope limits; that way there will be no ‘ledge’ detection on the hills.

I havent tried this either, but you could use a linetrace downwards to calculate the normal of the floor. Based on the normal, increase / decrease gravity to force the character to stay on the ground.

I had to do something similar on a sliding mechanic I worked on for my first game. Basically my character would fly off the slope at high speeds. My solution? Applied a constant downward force why sliding to “stick” the character to the floor.

Hope this helps!

Ooh, you know what? That might just do it.

I had already previously tried Bruno’s suggestion, to no avail, but that may work. Did you use a ticking Add Impulse node directed at Z-Down or the previous floor normal (getting vector from hit result)?

I’m not on my development computer, but if I can recall correctly just applying a Z-down force on a timer was good enough for my case.

Do not change gravity. That way lies only sadness.

Instead, when your character is running, and when you control the character in general, read the floor normal, and apply a force that is perpendicular to the normal, rather than just straight “forward.”

However, I don’t understand how you got into this problem in the first place. I did this:

  1. Create FPS Blueprint starter project
  2. Add a big BSP block that’s 10000x10000 units
  3. tilt the block 40 degrees
  4. run up the block, turn around, and run down again
  5. observe no jumping action