While the squaring was wrong if you were calculating the actual velocity (as var name suggests), given that you were actually just calculating an offset it is correct.
cm/s/s * s = cm/s (units of velocity)
cm/s/s * s*s = cm (units of position)
We are not integrating so this solution is always going to be effected significantly by framerate, and the use of Previous Velocity
(actually Offset Last Frame) I think makes this worse.
If you are getting a stutter on startup and some really big time deltas, that could easily cause the issue you are seeing. The ‘velocity’ update considers the full time delta and applies it, before checking for ground collision, with a really big time delta the amount of that delta before it actually hit the ground is irrelevant, it will accelerate it as if it were falling the whole time, then the collision handling flips the velocity (which is far bigger than it should have been), which would explain your high bounce.
Stick a conditional Print String
in there, log if the time delta is greater than, say, 0.1. If they print when you start, this is your problem.
The variable names and what is actually happening is going to be confusing, so I would recommend you change things so it works this way:
Velocity = 0;
Acceleration = -982; // cm / s^2
Tick(TimeDelta)
Velocity += Acceleration * TimeDelta;
Position += Velocity * TimeDelta;
Get rid of Previous Velocity
, you don’t need/want that.
Fix your acceleration ( * 100 to get to cm), this is why everything was so slow.
None of this fixes your frame rate interference, to do any of this properly you need to get into some very heavy math (integration, numerical no less), and such a thing in BP would be horrendous (to look at, and also for perf).
If you want good physics, you probably want to re-evaluate the ‘reasons’ you are doing this all yourself 