Two rigidbody.addforce causes the character to move quicker diagonally

I am trying to make a character controller with 8 direction movement, where it rotates in the direction that it is walking. I have the rotation down, but I need the character to walk forward no matter which input axis is being pressed. This is currently what I have that works, but because I am using addforce twice, it causes the character to move quicker when moving diagonally.

Vector3 velocity = rigidBody.velocity;
        Vector3 verticalForce = (Mathf.Abs(Input.GetAxis("Vertical")) * transform.forward * speed) - velocity;
        Vector3 horizontalForce = (Mathf.Abs(Input.GetAxis("Horizontal")) * transform.forward * speed) - velocity;
        rigidBody.AddForce(verticalForce, ForceMode.VelocityChange);
        rigidBody.AddForce(horizontalForce, ForceMode.VelocityChange);

Hi! Rather than creating two different vectors that have to interact, I would have a single movement vector that takes input from both axes and then normalizes the result. For example:

void Update() { Vector3 v3 = new Vector3 (Input.GetAxisRaw("Horizontal"), 0.0f, Input.GetAxisRaw("Vertical")); rigidBody.AddForce(v3.normalized*speed, ForceMode.VelocityChange); }

Normalizing the vector gives it a unit length of 1 that you can scale with your speed variable while maintaining its directional component. Let me know if this works and if you have any questions!