Download

Need help implementing ice (slippery floor) using the Top Down template

Am trying to implement a slippery floor in a primarily mouse driven game, but changing the ground material ( adding a Physical Materiel ) or changing the ground friction / braking friction in the character movement (inherited class) did nothing. Currently the movement is being done by “Simple Move To Location” which causes the character to lose all velocity (instantly stop) when the location is reached and the character changes direction almost instantly.

Below are the settings i have tried (CharacterMovement) which make it feel better but the instant stopping is still an issue and it not quiet slippery enough.
Setting Ground Friction (CharacterMovement) to 0 makes the most notable difference, I don’t think the rest of the changes do anything.


PS. Thanks for the help, this is mostly a hobby for me any help or links to learning material is appreciated.

Dollars to doughnuts the problem is the “simple” in simple move to location.

Try AI Move To first.

Second. IMHO the slippery portion needs to be handled by your animation in a top down game.

The thing is, you click a location and the character goes to that location - it doesn’t overshoot it.
It does exactly what it needs to precisely reach the end location.

As such, perhaps you can trace to the flor, and set the location of the move to location to overshoot in the direction of travel compared to where you clicked.

How?
Well… the character location you have and it’s your starting point.
The click location you get and it’s your end point.

Calculate direction of that - normalized gets you the vector of the rotation.

Multiply that vector by 100 to add a meter.

Add that to the click location, and when you move to (whichever mode you use) the character will “slip” after the location you clicked.

Now what I’d do is set the value of the actual click in the BP and have the animation automatically rotate towards it as the character slides away from it.

You are mostly on your own at that point…

If you wanted to go fancy you could read the friction from the trace and multiply the vector of direction by some number you make up based on the friction…