How can I make a grappling hook with RayCast?

I’m trying to make a game where I can move to targets with Raycast. I figured the code would work in the opposite way that the I can pull things to me but it isn’t working.

var target : Transform;
var target1 : Transform;

function Start()
{
	Screen.showCursor = false;
}

function Update () 
{
	if(Input.GetButton("Fire1"))
	{
		var ray1 : Ray = camera.ViewportPointToRay (Vector3(0.5,0.5,0));
		var hit1 : RaycastHit;
		if (Physics.Raycast (ray1, hit1,100))
		{
			if(hit1.transform.tag == "Pullable")
			{
				hit1.transform.position = Vector3.MoveTowards(hit1.transform.position, target.position,Time.deltaTime * 25);
				hit1.transform.LookAt(target);
			}
		}
		Debug.DrawLine (ray1.origin, hit1.point, Color.red);
	}
	if(Input.GetButton("Fire2"))
	{
		var ray2 : Ray = camera.ViewportPointToRay (Vector3(0.5,0.5,0));
		var hit2 : RaycastHit;
		if (Physics.Raycast (ray2, hit2,100))
		{
			if(hit2.collider.gameObject.tag  == "Teleport")
			{
				transform.position = Vector3.MoveTowards(transform.position, target1.position,Time.deltaTime * 25);
				transform.LookAt(target);
				print ("I hit it");
			}
		}
		Debug.DrawLine (ray2.origin, hit2.point, Color.green);		
	}
}

I didn’t understand exactly what you’re trying to do, but with a change in the ray creation you can click in the object and make it go in the target direction - but it will stop when you release the button, or when the object is no more under the mouse pointer:

function Update () 
{
    if(Input.GetButton("Fire1"))
    {
       var ray1 : Ray = camera.ScreenPointToRay (Input.mousePosition);
       var hit1 : RaycastHit;
       if (Physics.Raycast (ray1, hit1, 100))
       {
         if(hit1.transform.tag == "Pullable")
         {
          hit1.transform.position = Vector3.MoveTowards(hit1.transform.position, target.position,Time.deltaTime * 25);
          hit1.transform.LookAt(target);
         }
       }
       Debug.DrawLine (ray1.origin, hit1.point, Color.red);
    }
    if(Input.GetButton("Fire2"))
    {
       var ray2 : Ray = camera.ScreenPointToRay (Input.mousePosition);
       var hit2 : RaycastHit;
       if (Physics.Raycast (ray2, hit2, 100))
       {
         if(hit2.collider.gameObject.tag  == "Teleport")
         {
          transform.position = Vector3.MoveTowards(transform.position, target1.position,Time.deltaTime * 25);
          transform.LookAt(target);
          print ("I hit it");
         }
       }
       Debug.DrawLine (ray2.origin, hit2.point, Color.green);       
    }
}