Ejemplo n.º 1
0
    private IEnumerator Climbing()
    {
        isClimbing = true;
        animator.SetBool("climbing", true);
        float gScale = rigidbody2D.gravityScale;

        rigidbody2D.constraints  = RigidbodyConstraints2D.FreezePositionX;
        rigidbody2D.gravityScale = 0;
        transform.position       = touchingLadder.GetNearPosition(transform);
        Vector2[] bounds = touchingLadder.GetBounds();
        while (true)
        {
            yield return(null);

            var input = Input.GetAxisRaw("Vertical");
            rigidbody2D.velocity = new Vector2(0, input * speed);
            if (Input.GetKeyDown(KeyCode.X) || transform.position.y > bounds[0].y || transform.position.y < bounds[1].y)
            {
                rigidbody2D.velocity     = new Vector2(0, 0);
                rigidbody2D.constraints  = RigidbodyConstraints2D.FreezeRotation;
                rigidbody2D.gravityScale = gScale;
                isClimbing = false;
                animator.SetBool("climbing", false);
                yield break;
            }
        }
    }