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;
}