I don't understand what I'm passing to addTorque

in this snippet:

void FixedUpdate () {
		
			
	float h = Input.GetAxis("Horizontal") * amount * Time.deltaTime;
    float v = Input.GetAxis("Vertical") * amount * Time.deltaTime;
        
    rigidbody.AddTorque(transform.forward * h);
    rigidbody.AddTorque(transform.right * v);
	
}

I’m having a lot of trouble getting my head around what’s going on. I know h and v are just floating point values returned by GetAxis. I’ve watched the tutorial on getaxis and have played with it a bit to get a sense for how it works. What I don’t understand is what transform.up/right/forward actually is, or what happens to it when I use the multiplication operator with it.

transform.forward is the current forward direction of your object (the blue axis in the Scene view). It always has a magnitude of 1 so when you multiply it by h you are saying add the amount of torque in that direction based on the horizontal movement of the controller. If the controller isn’t moving in that direction then you will be multiplying by 0 and getting no effect, if the controller is fully in that direction you will be multiplying by 1 and get a torque of amount in that direction per second due to the Time.deltaTime.

transform.right is the red arrow in the inspector, the current right of the object.