MOVE GameObject to point A to B and to B to A

Hello,
try to move object “blinds” to point A to B and then to B to A

my code work for A to B (slowly)
but dont work for B to A (teleportation)

do you have anny issue ?
my code here ↓↓

using UnityEngine;

using System.Collections;

//using SimpleJSON;

public class blind_move : MonoBehaviour

{

public GameObject blinds;
private Vector3 Open;
public Vector3 Close;
public float distance = 5f;
public float speed = 5;
public float currentDistance;
private bool keyHit;
private bool keyHit2;

void Start()
{
    Open = blinds.transform.position;
    Close = blinds.transform.position + Vector3.down * distance;
}

void Update()
{
    if (Input.GetKeyDown(KeyCode.U))
    {
        keyHit = true;
   
    }
    if (keyHit == true)
    {
        currentDistance += Time.deltaTime;
      if (currentDistance >= speed)
        {
            currentDistance = speed;
        }
        float Perc = currentDistance / speed;
        blinds.transform.position = Vector3.Lerp(Open, Close, Perc);

    }

    
     if (Input.GetKeyDown(KeyCode.D)) 
    {
        keyHit2 = true;
     }
    if (keyHit2 == true)
    {
        currentDistance += Time.deltaTime;
        if (currentDistance <= speed)
        {
            currentDistance = speed;
        }
        float Perc = currentDistance / speed;
        blinds.transform.position = Vector3.Lerp(Close, Open, Perc);
       
    }
    
   
}

}

You better create 2 empty game objects (points A and B) and use them as references and you also can physically see them in the Editor.
Your object can be in 3 states:

  1. moving to A
  2. moving to B
  3. stay where it is.

Depending on which state it is, you do:

  1. Smoothly moving to the A
  2. Smoothly moving to the B
  3. Do nothing

Code for moving:

void Update() {
    float step = speed * Time.deltaTime;
    transform.position = Vector3.MoveTowards(transform.position, target.position, step);
}

Assuming this script run on the object which you want to move.
Target transform should be changed dynamically, and it is A or B transform references.

Thanks for reply, i found my problem and fix it

For people who follow this question

my solution :

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using SimpleJSON;

public class Blind_Movement_Test : MonoBehaviour
{

public Vector3 pointB;
public Vector3 pointA;
public float maxSpeed = 1;
public bool keyHit = false;
public bool keyHit2 = false;

void Start()
{

}

// Update is called once per frame
void Update()
{
    if (Input.GetKey(KeyCode.L))
    {
        keyHit = true;
        
    }

    if (keyHit == true)
    {
        keyHit2 = false;
        var change = maxSpeed * Time.deltaTime;
        transform.position = Vector3.MoveTowards(transform.position, pointB, change);

    }  

    if (Input.GetKey(KeyCode.M))
    {
        keyHit2 = true;
    }

    if (keyHit2 == true)
    {
        keyHit = false;
        var change2 = maxSpeed * Time.deltaTime;
        transform.position = Vector3.MoveTowards(transform.position, pointA, change2);
    }

}

For pointB and pointA defined in inspector (no work for double)

Cdt
Warz.