# 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.