Set velocity reduced on contact with surface

Hello,

I have the following problem:
I created an Actor Blueprint with a Sphere within (named “Ball”). By pressing a key, I set the Sphere’s physics linear velocity, like this:

Linear and angular damping are disabled.

When I set the sphere into an empty scene, the sphere moves with the assigned velocity of 20.

However, when I put the sphere on a plane and enable gravity for the sphere, the velocity drops to 14.295 immediately. It will remain constant at this value while rolling along the plane - so I assume it has nothing to do with friction, otherwise it would keep slowing down.

I assume the drop in velocity is due to some physics interaction. What do I need to set, to have the Sphere remain at the velocity of 20 while it touches the plane?

This is the scene:

Also, if I press the key again, the Sphere accelerates but only after hitting the key several times, will it reach the velocity of 20.

Here is an extract of the log for the sphere’s velocity:

LogBlueprintUserMessages: [Ball_2] X=20.000 Y=0.000 Z=0.000

LogBlueprintUserMessages: [Ball_2] X=14.295 Y=0.000 Z=0.000

LogBlueprintUserMessages: [Ball_2] X=14.277 Y=0.000 Z=-0.000

LogBlueprintUserMessages: [Ball_2] X=14.286 Y=0.000 Z=0.000

LogBlueprintUserMessages: [Ball_2] X=14.286 Y=0.000 Z=-0.000

LogBlueprintUserMessages: [Ball_2] X=14.286 Y=0.000 Z=0.000

LogBlueprintUserMessages: [Ball_2] X=14.285 Y=0.000 Z=-0.000

LogBlueprintUserMessages: [Ball_2] X=14.285 Y=0.000 Z=0.000

LogBlueprintUserMessages: [Ball_2] X=14.285 Y=0.000 Z=-0.000

LogBlueprintUserMessages: [Ball_2] X=14.285 Y=0.000 Z=0.000

[…]
LogBlueprintUserMessages: [Ball_2] X=14.282 Y=0.000 Z=-0.000

LogBlueprintUserMessages: [Ball_2] X=14.282 Y=0.000 Z=0.000

LogBlueprintUserMessages: [Ball_2] X=14.286 Y=0.000 Z=-0.000

LogBlueprintUserMessages: [Ball_2] X=14.286 Y=0.000 Z=0.000

LogBlueprintUserMessages: [Ball_2] X=14.286 Y=0.000 Z=-0.000

LogBlueprintUserMessages: [Ball_2] X=14.286 Y=0.000 Z=0.000

LogBlueprintUserMessages: [Ball_2] X=14.286 Y=0.000 Z=-0.000

LogBlueprintUserMessages: [Ball_2] X=14.285 Y=0.000 Z=0.000

maybe make the ball do a line trace to see on which surface it is and if it hits the surface u want set the velocity to 20. or maybe just set the velocity using event tick until a condition becomes false. that condition can anything that u can use to stop the ball.

Also im pretty sure its the linear and angular damping slowing the velocity down. it should be in physics section

Try changing the values. and maybe setting it to 0. i havent played around with linear and angular damping a lot.

Why won’t you use standard axis input? When you set velocity, it will always rely on physics and friction will do its job.

Or you can try setting a slippery physics material for your actor to eliminate friction.

Thank you. That did the trick. Previously, I had only set the plane to a frictionless physics material. Setting both of them to have to the frictionless material did it.
What still bothers me though: friction works constantly on a moving body and should therefore keep decelerating the ball until it stops. However, it does not.
I tried it out with a very low friction value. The velocity linearly drops from 20 to 19.something and so on until i reaches 14.295. It remains at this value forever, never stopping completely. In fact, I tried this with a few different velocity settings and it seem to decelerate until it reaches a velocity of 5/7 of the initial velocity.

Ue4 doesnt make the object stop its angular momentum overtime. u gotta up the angular damping to something like 3.

  • I know this because of rama.

  • i forgot telling u about physics material. my bad.