Help me with joystick setting

I created virtual joystick which is sendind coordinates from -1 to 1 on y and x axis to another Vector2 called moveVector by this code

    moveVector.x = Joystick.Horizontal ();
	moveVector.y = Joystick.Vertical ();

and its working.
Then i connected this Vector2 to my Character’s rigidbody by this code:
void Update() { myRigidBody.velocity = new Vector2 (moveVector.x * moveSpeed, moveVector.y*moveSpeed); }

But of course as more I pull the joystick, the faster the character moves. And it’s kinda smoothly.
I wanted to make character move to all sides with the same speed, because it’s 2d RPG character and i dont need too much physics, and wrote something like this:

    if (moveVector.y > 0.1f) 
            {
		moveVector.y = 0.5f;
            }
	if (moveVector.y < -0.1f) 
                 {
		moveVector.y = -0.5f;
		}

	if (moveVector.x > 0.1f)
            {
		moveVector.x = 0.5f;
	}
	if (moveVector.x < -0.1f) 
           {
		moveVector.x = -0.5f;
	}

it solved problem with same speed, but when only x and y axis value of joystick exceeding values 0.1f
it was starting move diagonally with 0.5f*moveSpeed speed. I mean it was hard to control the character because he always was turning to the left or right diagonally, and it was hard to move straight forward
And area of diagonal move on joystick was too large as blue filled part on the picture below.
How can i decrease the diagonal movement area and make bigger XY axis movement area?
Pls help im so noob
88875-cgfh.png

Hey, first you want to use myRigidBody.AddForce (moveVector);.

For the second problem, you can say that if any axis value is below a threshold, while the other one is above another threshold, then you cancel it. Something in the like :

if (Mathf.Abs(moveVector.y) > 0.5f && Mathf.Abs(moveVector.x) < 0.2f)
    moveVector.x = 0;
else if (Mathf.Abs(moveVector.x) > 0.5f && Mathf.Abs(moveVector.y) < 0.2f)
    moveVector.y = 0;