Velocity limiter not functional

If i have this code:

public float walkAcceleration = 5f;
	public float maxWalkSpeed = 20f;
	public float maxSlope = 60f;
	public float jumpVelocity = 20f;
	public GameObject cameraObject;
	[HideInInspector]
	public Vector2 horizontalMovement;
	[HideInInspector]
	public bool grounded = false;
	public float jump = 0f;

	void Update () {
		horizontalMovement = new Vector2(rigidbody.velocity.x, rigidbody.velocity.z);
		if(horizontalMovement.magnitude > maxWalkSpeed){
			horizontalMovement.Normalize();
			horizontalMovement *= maxWalkSpeed;
		}
	
		float velX = rigidbody.velocity.x;
		velX = horizontalMovement.x;
		float velZ = rigidbody.velocity.z;
		velZ = horizontalMovement.y;


		//rigidbody.velocity = new Vector3(horizontalMovement.x, 0, horizontalMovement.y);

		transform.rotation = Quaternion.Euler(0, cameraObject.GetComponent<MouseLookScript>().currentYRotation, 0);
		rigidbody.AddRelativeForce(Input.GetAxis("Horizontal") * walkAcceleration, jump, Input.GetAxis("Vertical") * walkAcceleration);

		jump = 0f;
		if(Input.GetButtonDown("Jump") && grounded){
			jump = jumpVelocity;
		}
	}

Why can my person still walk at like the speed of sound ? When it is clearly being limited at the start of the update function.

You’re continuously adding more force by using AddRelativeForce with a non-zero value in Update (which, by the way, makes the code framerate-dependent…always use FixedUpdate for physics). You’re only limiting the rate at which the speed can increase, but not limiting the actual speed.