Rigidbody movement issues

Hi,

Firstly, thanks for looking, and secondly, I hate having to ask for help, but I have now spent a couple of days trawling the anwsers site, as well as searching the internet for the clues.

I am attempting to make a topdown space shooter, with frictionless movement. I started out by using transform.translate, and then moved to rigidbodies. (first time writing a game, and firstime writing JavaScript, so this is all a learning experiance.) I have the Rigidbodies moving as expected, the problem comes, when I want to set a max speed, so things cannot accelerate indefinetly, this works o.k, until i want to change direction, whilst at top speed, due to the way i have my code currently, if my velocity is equal to my ships top speed, no input is accepted. Below is the code;

var ShipTopSpeed:float = 50;

var RevShipTopSpeed:float = -10;
var ShipAcceleration:float = 100;
var ShipDecceleration:float = 1.5;
var ShipRotationPosSpeed:float = 50;
var ShipRotationNegSpeed:float = -50;
var ShipRotationAcceleration:float = 5;
var ShipRotationDecceleration:float = 1;
var ShipRotationCurrentSpeed:float; 
var velocity:Vector3;
function Update(){
}
function FixedUpdate () {
cross = rigidbody.angularVelocity;

if (Input.GetButton('a')){
rigidbody.AddRelativeTorque(Vector3.down* ShipRotationPosSpeed);
  	}
if (Input.GetButton('d')){
rigidbody.AddRelativeTorque(Vector3.up * ShipRotationPosSpeed);
}	
if(Input.GetButton('w')) {
if (rigidbody.velocity.magnitude < ShipTopSpeed){
rigidbody.AddRelativeForce(Vector3.forward * ShipAcceleration);
}
    }    
if (Input.GetButton('s')){
rigidbody.AddRelativeForce(Vector3.back * ShipDecceleration);
}
print (cross.y);
}

I need a way of determining if the angle of rotation has changed, that then allows me to apply force until the max speed in that direction has been achived.

Im guessing i need to do something with Vector3.dot?

Any suggestions are welcome. and thanks in advance.

After some more reading, and a helpfull post in the forum. I was informed the best way to do this is to clamp the velocicty to my desired speed. Basicly ignoring changes in velocity, once my max speed was attaiend. I found the following script, which makes this really easy

its here