Ваше условие while l oop использует elapsedDistance, которое увеличивается с moveSpeed. Последний равен 5, поэтому он будет 1 из 1/5 секунды. Ваш объект, вероятно, перемещается только на 0,2 единицы.
вам следует использовать Mathf.Lerp или MoveTowards
float distance = 1f;
float time = 0f;
float period = 1f; // how long in second to do the whole movement
yield return new WaitUntil(()=>
{
time += Time.deltaTime / period;
float movement = Mathf.Lerp(0f, distance, time);
Vector3 cubeLocalPosition = transform.localPosition;
cubeLocalPosition.y += movement;
transform.localPosition = cubeLocalPosition;
return time >= 1f;
});