Check out example codes for "unity vector3 smoothdamp not reaching target". It will help you in understanding the concepts better.

Code Example 1

IEnumerator SmoothDampExample() 
 {    
   // Say this is your target position     
   var targetPosition = new Vector3(someX, someY, someZ);     
   // This is your initial smooth time     
   float smoothTime = 1.1f;     
   // This is the amount you will be reducing smoothTime on each iteartion     
   float smoothTimeChange = 0.0075f;     
   // Store the result of smooth damp here     
   Vector3 newPosition;     
   // current smooth velocity     
   float currentSmoothVelocity;     
   // Let's say we want to move this component's transform position.     
   // We will do this until smooth damp is done.     
   while (true) {         
     // Get the new position         
     newPosition = Vector3.SmoothDamp(transform.position, targetPosition, ref currentSmoothVelocity, smoothTime);         
     // If new position equals to current position, it means         
     // it didn't change. SmoothDamp never actually reaches its target,         
     // so when it doesn't move it's when we know it is done.         
     if (newPosition == transform.position) {             
       break;         
     }         
     // Set new position         
     transform.position = newPosition;         
     // Reduce smoothTime so SmoothDamp will go faster         
     smoothTime = smoothTime - smoothTimeChange;         
     // Wait for next frame         
     yield return null;     
   }     
   // Smooth damp is done! 
 }

Learn ReactJs, React Native from akashmittal.com