# How to have a 3D anchor point that limits how far you can go?

I created a grapple script where if you press a button the hook launches however I want to know if there is a possible way for that when the hook does attach to an object, it creates an anchor point so that the player cant move a certain distance away from it without it pulling the player back.

``````    public KeyCode leftHook;
public KeyCode rightHook;

public KeyCode leftGas;
public KeyCode rightGas;

public GameObject hookLeft;
public GameObject hookLeftHolder;

public GameObject hookRight;
public GameObject hookRightHolder;

public float hookTravelSpeed;
public float playerTravelSpeed;

public float maxDistance;
private float currentDistance;

public bool firedLeft;
public bool hookedLeft;

public bool firedRight;
public bool hookedRight;
// Use this for initialization
void Start () {

}

// Update is called once per frame
void Update () {

if (Input.GetKeyDown(leftHook) && !firedLeft)
{
firedLeft = true;
}
if (Input.GetKeyDown(rightHook) && !firedRight)
{
firedRight = true;
}

if (firedLeft)
{
hookLeft.transform.Translate(Vector3.forward * Time.deltaTime * hookTravelSpeed);
currentDistance = Vector3.Distance(transform.position, hookLeft.transform.position);

if(currentDistance >= maxDistance)
{
ReturnHookLeft();
}
}
if (firedRight)
{
hookRight.transform.Translate(Vector3.forward * Time.deltaTime * hookTravelSpeed);
currentDistance = Vector3.Distance(transform.position, hookRight.transform.position);
if (currentDistance >= maxDistance)
{
ReturnHookRight();
}
}
if (hookedLeft)
{
// Creates the anchor point
}
if (hookedRight)
{
// Creates the anchor point
}

}
void ReturnHookLeft()
{
hookLeft.transform.position = hookLeftHolder.transform.position;
firedLeft = false;
hookedLeft = false;
}
void ReturnHookRight()
{
hookRight.transform.position = hookRightHolder.transform.position;
firedRight = false;
hookedRight = false;
}
``````

A Configurable Joint sounds like what you’re looking for.