unity vector3 smoothdamp not reaching target code example
Example: unity vector3 smoothdamp not reaching target
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!
}