Почему не работает перемещение в Unity3d?
Не сравнивайте так float'ы, если вам нужна точность. Правильно так:if (Mathf.Abs(transform.position.x - сравниваемое_значение) < порог_точности)
Порог точности может быть любым, надо подбирать под конкретную ситуацию, например 0.001
Вы неправильно поняли работу функции. Коротко из справки:
static Vector3 Lerp(Vector3 from, Vector3 to, float t);
t = 0 returns "from", t = 1 returns "to", when t = 0.5 returns the point midway between from and to.
А в вашем коде вы всегда только приближаетесь к нужному значению. 
Посмотрите пример использования: docs.unity3d.com/ScriptReference/Vector3.Lerp.html