Mathf.SmootDamp not working correctly

I’ve seen a lot of issues with Mathf.Smooth Damp, most of them in the target not ever being reached, and most simply come down to the coder not using the correct layout of values, however I have done this (to the best of my knowledge) and yet am still faced with the same problem.

here is what I am typing in:

float lerp = 1f;
float velocity = 0;
float timeToTarget = 1.5f;
while (lerp > 0)
{			
    lerp = Mathf.SmoothDamp(lerp, 0, ref velocity, timeToTarget);
....

Now as far as I can understand this is the correct way to lay out the Mathf.SmoothDamp code, however it takes nowhere near the time to reach roughly the right point, and the once it does it begins dealing with minute details of accuracy in decimals rather than ever actually reaching the target.

I did simply have a:

if (lerp < 0.0001f)
{
	lerp = 0;
}

piece of code in, however this still leads to a noticable jerk at the end, which is the whole reason I wanted to use Smooth Damp in the first place. Does anyone have any thoughts?

To get what you want, you need to research easing. Do a Google search for “unity3d easing functions”. You will find many hits with some sample code.

Here is a blog by @WhyDoIDoIt:

http://whydoidoit.com/2012/04/06/unity-curved-path-following-with-easing/

Here is a list of easing equations by Robert Penner:

http://www.gizma.com/easing/