rotating to the current facing position

I am trying to write a script for a hover board.

The problem I’m having is rotating the board to the position the player is facing, and ,

(the board is hovering so there is no drag) moving the board in the correct direction.

Currently the character turns but not to the direction of travel.

var moveX : float = 0.0;
var turnForce : float = 10.0;

function Update () {	
	moveX = Input.GetAxis ("Horizontal");
	rigidbody.AddTorque(Vector3.up * (moveX * turnForce * Time.deltaTime));
	// turning but 'sliding' , add relative force to 'push' in new direction
	rigidbody.AddRelativeForce(Vector3.right * (moveX * turnForce * Time.deltaTime));
}

Even if I make a vector which I want the object to face, I don’t know how to rotate or add torque to face that point.

(this is more of a general comment rather than a question) :

I’m having great difficulty understanding how to rotate my characters in any scripts, with either method (transform or rigidbody).

I just cannot get my head around local space and world space in relation to any of the transform rotation Quaternian Slerp stuff, or the physics rigidbody addTorque stuff.

here is the project : http://www.alucardj.net16.net/unityquestions/hoverboard%201-1a.html

here is the full script : http://www.alucardj.net16.net/unityquestions/ScriptHover1-1a.js

(note: the textures and objects are basic =] , I am just using them to write the script , and for now the rigidbody constraints are on for rotation X and Z)

I have sorted the issues related to this old question. The problem I was having was understanding the difference between a transform.right and a Vector3.right

http://unity3d.com/support/documentation/ScriptReference/Vector3-right.html

http://unity3d.com/support/documentation/ScriptReference/Transform-right.html

But the actual issue was more to do with Controlling the rotation accurately using Force and Torque.

Quaternion in general remains a mystery : http://answers.unity3d.com/questions/230505/am-i-using-degrees-radians-rotation-or-quaternion-.html

Why not just set the transform of the board to match the player?
Something like (script on the hover board):

function Update()
{
  transform.rotation = player.transform.rotation;
}

Move the board by, for example,

transform.Translate (transform.forward * speed * Time.deltaTime);

With physics (untested)

rigidbody.MoveRotation(player.transform.rotation);