// Use this for initialization
 void Awake()
 {
     mat = GetComponent <Renderer>().material;
     if (player == null)
     {
         player      = GameObject.FindGameObjectWithTag("Player");
         playerMover = player.GetComponent <CharacterMover>();
         maxDistance = playerMover.GetMaxGrappleDistance();
     }
 }
    // Update is called once per frame
    void Update()
    {
        float distance = Vector3.Distance(transform.position, player.transform.position);

        if (distance < playerMover.GetMaxGrappleDistance())
        {
            mat.color = grappleableColor;
        }
        else
        {
            mat.color = grappleState.Evaluate(1 - distance / maxDistance);
        }
    }