How do you move a rigidbody by a vector3 relative to itself?

When I try and move a rigidbody with the MovePosition(Vector3) function, it moves in the direction of that actual vector3. I want it to move by that vector3 in the direction the rigidbody is already facing. here’s my current code. What would I use to do this correctly?

void FixedUpdate ()
{
	//Take input for movement
	Vector3 movement = new Vector3(Input.GetAxis("Horizontal"), 0f, Input.GetAxis("Vertical"));
	movement *= speed;
	//Move
	rigidbody.MovePosition (rigidbody.position + movement * Time.deltaTime);

	//Take input for rotation
	Vector3 rotation = new Vector3( 0f, Input.GetAxis("Turn"), 0f);
	rotation *= rotateSpeed;
	//Rotate
	rigidbody.MoveRotation (transform.rotation * Quaternion.Euler(rotation));
}

ah, yeah. I realized that a bit after posting this question and I rewrote it to move based on the forward. Like this:

//Take input for rotation
Vector3 rotation = new Vector3( 0f, Input.GetAxis("Turn"), 0f);
rotation *= rotateSpeed;
//Rotate
rigidbody.MoveRotation (transform.rotation * Quaternion.Euler(rotation));
    
//Take input for vertical movement
float moveVert = Input.GetAxis ("Vertical");
moveVert *= speed;
//Move vertically
rigidbody.MovePosition (rigidbody.position + (transform.forward * moveVert) * Time.deltaTime);
    
//Take input for horizontal movement
float moveHorz = Input.GetAxis ("Horizontal");
moveHorz *= speed;
//Move horizontally
rigidbody.MovePosition (rigidbody.position + (transform.right * moveHorz) * Time.deltaTime);

Sorry if the orighinal question was confusing