- Home /
SmoothDamp won't reach its target
I've been bashing my head for a while on this. Here's what I've managed to rule out:
-The CoRoutine is called only once.
-The while loop is constant, yet doesn't crash.
-The "percentage" float jitters around 0.2F
Here's the code:
IEnumerator MoveTo(Vector3 endPosition)
{
Vector3 startPosition = transform.position;
Vector3 currentPosition = startPosition;
float smoothTime = timer;
float vel = 0.0F;
float percentage = 0;
// yield return new WaitForSeconds(delay);
while (percentage < 1)
{
percentage = Mathf.SmoothDamp(0F, 1F, ref vel, smoothTime);
print (Time.time);
currentPosition = Vector3.Lerp (startPosition, endPosition, percentage);
transform.position = currentPosition;
yield return 0;
}
}
Comment
Best Answer
Answer by robertbu · Jul 05, 2013 at 02:20 PM
You are misusing SmoothDamp(). The first parameter should be the current percentage. The last is the time it should take to reach the target. Replace line 5 with this:
percentage = Mathf.SmoothDamp(percentage, 1.0f, ref vel, 0.75f);
$$anonymous$$an... I can't believe I missed that. Thanks!
If you were used to using Lerp(), then you attempt makes sense. SmoothDamp() is a different kind of beast.
Your answer
![](https://koobas.hobune.stream/wayback/20220613105525im_/https://answers.unity.com/themes/thub/images/avi.jpg)