Ejemplo n.º 1
0
    void FixedUpdate()
    {
        if (grounded && !Physics2D.OverlapCircle(Feet.position, feetRadius, groundLayer))
        {
            anim.SetTrigger("Fell");
        }

        grounded = Physics2D.OverlapCircle(Feet.position, feetRadius, groundLayer);
        ledging  = Physics2D.OverlapCircle(wallChecker.position, feetRadius, groundLayer) && !Physics2D.OverlapCircle(ledgeChecker.position, feetRadius, groundLayer);

        anim.SetFloat("Speed", Mathf.Abs(rigid.velocity.x));
        anim.SetBool("IsGrounded", grounded);
        if (grounded)
        {
            if (!cooldown)
            {
                rigid.velocity = new Vector2(Input.GetAxis("Horizontal_P" + playerNumber) * Speed, rigid.velocity.y);
            }
            switch (headState)
            {
            case HeadState.Launched:
                if (CanWalkOnLaunch)
                {
                    //headScript.MaxOnlyManager(true, true, false);// Don't touch this !!
                    headScript.ShortenDistance(Mathf.Max(0, Input.GetAxis("Vertical_P" + playerNumber) * Time.deltaTime) * UpDownSpeed);
                }
                else if (!cooldown)
                {
                    rigid.velocity = Vector2.zero;
                }
                break;

            case HeadState.Grabbing:
                headScript.ShortenDistance(Mathf.Max(0, Input.GetAxis("Vertical_P" + playerNumber) * Time.deltaTime) * UpDownSpeed);
                break;

            case HeadState.Attached:
                headScript.EnableJoint(false);
                if (Input.GetButtonDown("B_P" + playerNumber))
                {
                    Debug.Log("Hey");
                    headScript.Throw(cursor.aimDirection());
                }
                break;
            }
        }
        else
        {
            switch (headState)
            {
            case HeadState.Grabbing:
                if (!ledging)
                {
                    Swing();
                }
                else
                {
                    if (Input.GetAxis("Vertical_P" + playerNumber) > 0.5f)
                    {
                        rigid.AddForce((Vector2.up) * ledgingStrength);
                        //transform.position += Vector3.up + (FacingRight? Vector3.right : Vector3.left)*1.5f;
                        headScript.DeleteJoint();
                    }
                    else
                    {
                        Swing();
                    }
                }
                break;

            case HeadState.Launched:
                Swing();
                break;
            }
        }
    }