public void Release()
 {
     _particles.Stop();
     lineRenderer.enabled = false;
     // player.QuitYoyo();
     target.gameObject.SetActive(true);
     yoyoState = YoyoState.IDLE;
 }
 private void Start()
 {
     target.lengthToTarget = length;
     yoyoState             = YoyoState.IDLE;
     offsetFromPlayer      = transform.position - player.transform.position;
     lineRenderer          = GetComponent <LineRenderer>();
     lineRenderer.enabled  = false;
     target.gameObject.SetActive(true);
     _particles = GetComponent <ParticleSystem>();
 }
    private void LaunchedUpdate()
    {
        DrawYoyoString();
        Debug.DrawRay(goalPosition, Vector3.up, Color.red);
        // move towards goal position
        float frameSpeed       = speed * Time.deltaTime;
        float distanceFromGoal = Vector3.Distance(transform.position, goalPosition);

        if (distanceFromGoal > frameSpeed)
        {
            transform.position -= goalDirection.normalized * frameSpeed;
        }
        else
        {
            yoyoSpinTarget.position = player.transform.position;
            yoyoState = YoyoState.PULL;
        }
    }
    public void Launch()
    {
        if (yoyoState == YoyoState.IDLE)
        {
            goalPosition  = target.transform.position;
            goalDirection = transform.position - goalPosition;
            goalPosition  = transform.position - (goalDirection.normalized * length);
            yoyoState     = YoyoState.LAUNCHED;
            target.gameObject.SetActive(false);
            // playerPullSpeed = playerPullSpeedInitial;

            if (goalPosition.x < player.transform.position.x)
            {
                spinDirection = 1;
            }
            else
            {
                spinDirection = -1;
            }
        }
    }