コード例 #1
0
    private IEnumerator AnimateGrapple(Vector2 targetPosition)
    {
        lineRenderer.positionCount = 2;

        Vector3[] positions   = new Vector3[2];
        float     animateTime = 0.15f;

        float timer = animateTime;
        float step  = 0;

        while (timer > 0)
        {
            step        += Time.deltaTime / animateTime;
            positions[0] = this.transform.localPosition;


            Vector3 localPosition = transform.TransformPoint(positions[1]);
            positions[1] = transform.InverseTransformPoint(Vector2.MoveTowards(localPosition, targetPosition, step));
            lineRenderer.SetPositions(positions);

            timer -= Time.deltaTime;
            yield return(null);
        }

        Vector2 start = this.transform.position;
        Vector2 vel   = calcInitalVelocity(start, targetPosition, animateTime);

        controllerData.InvokeMovePlayerGrapple(vel);

        while (controllerData.onCeiling == false)
        {
            positions[0] = this.transform.localPosition;
            positions[1] = transform.InverseTransformPoint(targetPosition);

            lineRenderer.SetPositions(positions);
            yield return(null);
        }

        lineRenderer.positionCount = 0;
    }