2D Analog Movement

I’m trying to make a 2D, top-down, twin stick shooter.

All that I’m wanting to do is have analog movement that allows my character to move in any x or y direction depending on where the left joystick is in relation to its center. I’d also like the character to be able to move slower if the joystick isn’t pushed all the way.

I’ve got some super basic code that looks like this:
Vector2 moveInput = new Vector2(Input.GetAxis(“Horizontal”), Input.GetAxis(“Vertical”));
moveVelocity = moveInput * speed;
rb.MovePosition(rb.position + moveVelocity * Time.fixedDeltaTime);

I’ve got some serious problems right now that have to do with my axes. The horizontal and vertical axes aren’t being reset to 0 when the analog stick stops being pressed, so the character just glides until the end of time. My character also has a serious tendency to move downwards, even with gravity set to 0.

What do I have to do to remedy this?

ok i didn’t know “gravity” is re-center speed