Noob question - Physics Material not working, no friction applied

I am trying to make it so when my Pawn, which is a sphere, is rolling on different shapes (StaticMeshActors) in my scene, friction will be applied.

I have done so by creating a Physical Material with Friction of 500. And applying it to various StaticMeshActors in my scene.

My pawn is a sphere that has linear velocity applied to it after pressing space bar.

No matter where I try to apply the Physical Material, it does not affect the friction of any surfaces in my Scene.

The sphere collides correctly but will just roll as if there is no friction on any shapes.

Perhaps you’re expecting the wrong thing. When it comes to a rolling ball, friction will not slow anything down, on the contrary - friction will ensure a better grip so a ball is easier to roll (with torque).

High friction would work well on a cube sliding down a ramp.

Friction of 500

Values above 1 don’t do anything, afair.


My pawn is a sphere that has linear velocity applied to it after pressing space bar.

Also, not sure how this is done but if you override linear velocity every frame, the physics engine can’t do anything about it. Unless you meant a singular action / impulse, ofc.

I see thanks for clarifying. I have been struggling with this issue for 4 hours looking everywhere I can and trying a million different things, thank you so much.

So the Physical Material is likely working, it’s just that friction is not going to slow the ball down.

So then how would I be able to slow the ball down when it comes in contact with different surfaces? I am trying to make it so that different surfaces will slow down the ball at different rates. I am making a golf game where the ball will roll faster/slower depending on the type of grass it is on.

The velocity is set after pressing spacebar. It cannot be pressed again until the ball comes to rest.

The ball never seems to come to rest, the velocity will decrease to a small value less than 1. If it comes to rest in a groove or on a slope, the value seems to fluctuate between 0-2. Therefore I check in the event tick if the velocity is less than 3 to allow it to be launched again (spacebar event). I also check if velocity is less than 10 to set it to 0. However the velocity is never set to 0. It seems like it sets to 0 but then because the ball isn’t completely on the ground, it gains velocity again, then sets to 0 perpetually (this is my guess at least).

The behavior is a little strange where when the ball comes to rest in a groove as pictured, the velocity stays a bit higher and tends to fluctuate between 0-2. The blue number in the top left of the screenshot shows the velocity, even though the ball looks like it is still. Maybe you can help me with this too.

1 Like

Perhaps you could read the value of the physical material the ball is rolling on:

And apply a force in a direction opposite to the velocity? The flat platform closer to us has a friction of 1:

In this very case, all values will matter, ofc.


And another way is to modify the Linear / Angular Damping factor of the simulating mesh.

That is the behavior I desire. To have the ball gradually come to a stop. Also for the roll to be affected differently depending on the surface.

However, if I apply that to all of the static meshes in my scene, would that be bad practice for performance? Or is that a non-issue?

I’d look at working with the PM’s Density and Sleep linear velocity threshold.


Edit …
Also have to look at your pawns physical material.

Another option you could look at is changing the PM’s on the Pawn and adjusting its movement settings.

e.g. Braking friction, braking friction factor, mass, ground friction, braking deceleration etc.

You can write a function that runs on tick or timer and only modify these things IF the surface type you’re walking on has changed.

trace to get PM: surface type → compare against “Last Changed Surface”
IF != update Last Changed Surface → Make changes

The script is in the golf balls, not in the meshes; and it will not affect performance in any way. Not unless you have a 1000 of them simultaneously simulating physics, ticking and doing other things.


What I suggested is the most mundane setup which can be vasly improved, ofc. I’d add a curve, sample body’s velocity & friction / factors, process it and only then apply the desired forces. This way you get to simulate air resitance, wind, surfaces and whatnot. You could also combine it with volumes.

For something more advanced, there are vector fields.


Indeed, here’s what I meant, high friction material is closer to us:

But if you want the ball to come to stop quicker, increase linear damping a bit - there’s no need to jump many hoops here, and it meshes well with applying forces suggested earlier on.