Плавное перемещение объекта в позицию endPosition со скоростью speed.
Вызывается: StartCoroutine(MoveTowards(endPosition, speed));
Своими словами: Vector3.MoveTowards(p1, p2, p3) берёт вектор (направление) между p1 и p2 и к p1 прибавляет p3. Результат не может быть дальше p2.
private IEnumerator MoveTowards(Vector3 endPosition, float speed) { while (transform.position != endPosition) { transform.position = Vector3.MoveTowards(transform.position, endPosition, speed * Time.deltaTime); yield return null; } }