Ну, ваш Rb не проходит точно для каждой точки между начальной позицией и Vector2. В prtty вряд ли будет rb.position == pos, потому что одного кадра будет недостаточно, а следующего будет слишком много :)
Попробуйте с MoveTowards. Некоторым нравится это:
rb.position = Vector3.MoveTowards(rb.position, pos, speed * Time.fixedDeltaTime);
Вам не нужен оператор, чтобы остановить его, потому что он сделает это, когда достигнет позиции.
PD: вы можете сделать это с помощью transform вместо жесткого тела, если вы не собираетесь использовать физику, и вам нужно только движение.