Stuttering while moving Background

So I have a 2D character that moves in the screen with GetAxisRaw function and i’m for testing purposes relying on the update() method to move the char itself. Many 2D games have somesort of script that I tried to recreate that moves the various layers of the background at different speed, recreating thus a cool 3d looking environment while player moves.
Apparently I got how to move different background layers at different speed and all of this works except for the immense stuttering that I see at higher movement speed. PS: I see stuttering ONLY when the character moves and the background does it too

    void Update ()
        {
            //Character Movement
            GetAxis = Input.GetAxisRaw("Horizontal");          
            rigidbody2D.velocity = new Vector2(GetAxis * Velocity, rigidbody2D.velocity.y);
     
            //if scrollbackground's set to true the following gets executed
            if (ScrollBackground)
            {
                Background.transform.position = new Vector3(Background.transform.position.x + GetAxis * Velocity / 100, Background.transform.position.y, 5f);
            }
        }

feel free to ask for more details if the above seems right to you

IMPORTANT EDIT : this only happens if character movement is done trought rigidbody.velocity, if I move the char directly with transform.position, the stuttering doesn’t happen.

The Unity physics loop, ie. FixedUpdate, is separate to the Update loop.

When you set rigidbody.velocity you’re setting by how much your rigidbody will move next FixedUpdate. You aren’t actually moving it. You are however moving the background by a speed that not time dependant.

You can either perform both actions in the FixedUpdate loop, or (as suggested in the comments) you can move your background completely independently of your character, ie. with your camera.

There are some beautiful explanations as to the differences between Update and FixedUpdate around the web (such as here), which should answer any other questions you have about them.

Benproductions1 is correct, but I wanted to add another answer just to be more specific.

I would try replacing the code with the following to see if this helps:

void Update ()
        {
            //Character Movement
            GetAxis = Input.GetAxisRaw("Horizontal");          
            rigidbody2D.velocity = new Vector2(GetAxis * Velocity, rigidbody2D.velocity.y);
 
            //if scrollbackground's set to true the following gets executed
            if (ScrollBackground)
            {
                Background.transform.position = new Vector3(Camera.main.transform.position.x / 100, Background.transform.position.y, 5f);
            }
        }

If that doesn’t help, I would look at how the camera script works. If the camera is attached to the rigidbody (the character), and the camera code is run at Update() and not FixedUpdate(), then that may be the issue; try moving the camera updating code to FixedUpdate().