// Update is called once per frame
    void Update()
    {
        bool Left  = Input.GetKey(KeyCode.A),
             Right = Input.GetKey(KeyCode.D);

        movementmanager.SetDirection(Left ? -1 : (Right ? 1 : 0), 0);

        if (Input.GetKeyDown(KeyCode.Space) &&
            (movementmanager._grounded || (!movementmanager._grounded && !hasDoubleJumped)))
        {
            movementmanager.Jump();

            if (!movementmanager._grounded && !hasDoubleJumped)
            {
                hasDoubleJumped = true;
            }
            else
            {
                hasDoubleJumped = false;
            }
        }

        if (Input.GetKeyUp(KeyCode.Space))
        {
            movementmanager.CutJump(2);
        }

        if (Input.GetKeyDown(KeyCode.Z))
        {
            movementmanager.Stop();
        }
        if (Input.GetKeyUp(KeyCode.Z))
        {
            movementmanager.Resume();
        }

        if (!movementmanager._grounded && (movementmanager.collisionInfo.collidedLeft && Input.GetKey(KeyCode.A) ||
                                           movementmanager.collisionInfo.collidedRight && Input.GetKey(KeyCode.D)) &&
            Input.GetKeyDown(KeyCode.Space))
        {
            movementmanager.WallJump();
        }

        if (Input.GetKeyDown(KeyCode.S))
        {
            movementmanager.FallThrough();
        }
    }