Ejemplo n.º 1
0
    public void Move(float horiz)
    {
        if (isDashing)
        {
            return;
        }

        float moveDelta = 0;

        float _acceleration = acceleration * Time.deltaTime;

        if (wJumpMoveSleepTimer > 0)
        {
            horiz = 0;

            if (wallOnRightSide)
            {
                moveInputX = -1;
            }
            else
            {
                moveInputX = 1;
            }
        }
        else
        {
            if (!isGrounded)
            {
                moveDelta = _acceleration / 2;
            }
            else if (moveInputX > 0 && horiz <= 0 || moveInputX <= 0 && horiz > 0)
            {
                moveDelta = _acceleration * 2;
            }
            else
            {
                moveDelta = _acceleration;
            }

            GameObject wallTouchedRight = CheckWallRight();
            GameObject wallTouchedLeft  = CheckWallLeft();

            if (wallTouchedRight != null && horiz > 0)
            {
                moveInputX = 0;
                if (!isGrounded)
                {
                    StartWallSlide(true, wallTouchedRight);
                }
                else if (isWallSliding)
                {
                    EndWallSlide();
                }
            }
            else if (wallTouchedLeft != null && horiz < 0)
            {
                moveInputX = 0;
                if (!isGrounded)
                {
                    StartWallSlide(false, wallTouchedLeft);
                }
                else if (isWallSliding)
                {
                    EndWallSlide();
                }
            }
            else
            {
                moveInputX = Mathf.MoveTowards(moveInputX, horiz, moveDelta);
                if (isWallSliding)
                {
                    EndWallSlide();
                }
            }
        }

        if (moveInputX != 0)
        {
            grCheckOffsetX = grCheckMoveOffsetX;
        }
        else
        {
            grCheckOffsetX = 0;
        }

        //rb.velocity = new Vector2(moveInputX * speed, rb.velocity.y);

        if (!playerAnim.IsFacingRight() && moveInputX > 0)
        {
            playerAnim.LookRight();
        }
        else if (playerAnim.IsFacingRight() && moveInputX < 0)
        {
            playerAnim.LookLeft();
        }
    }