NullReferenceException Error

When I try to run my script I get this error:

NullReferenceException
Movementscript.FixedUpdate () (at Assets/Movementscript.js:7)

Here is my script:

   var speed=20.0;
    function FixedUpdate () {
    
	var torque=Vector3(Input.GetAxisRaw("Vertical"), 0, -Input.GetAxisRaw("Horizontal"));
	if(torque.magnitude > 0.0){
		torque=Camera.main.transform.TransformDirection(torque);
		rigidbody.angularVelocity=Vector3.Lerp(rigidbody.angularVelocity, torque * 2, 0.3);
	}

if (Input.GetButton("W"))
{

rigidbody.AddRelativeTorque (2, 0, 0);

rigidbody.AddRelativeForce (2, 0, 0);
}


if (Input.GetButton("S"))
{

rigidbody.AddRelativeTorque (-2, 0, 0);
rigidbody.AddRelativeForce (-2, 0, 0);
}

if (Input.GetButton("A"))
{
rigidbody.AddRelativeTorque (0, 0, -2);
rigidbody.AddRelativeForce (0, 0, -2);
}


if (Input.GetButton("D"))
{
rigidbody.AddRelativeTorque (0, 0, 2);
rigidbody.AddRelativeForce (0, 0, 2);
}
}

I don’t see any problem with the script, so can someone explain to me what’s wrong?

Don’t you need to tell Unity which rigidbody you’re referencing? Rigidbody is a component of a Game Object, I believe.

like, Machine1.rigidbody.AddRelativeTorque

Like Sparkplug94 says, to this script works, its need to be attached to an object that have a rigidbody attached.

Anyway, why are you using Input.GetButton to keys(letters)? That letters are mapped in Edit > Project Settings > Input?
If no, the best way to use Keys is Input.GetKey.

Borgo is correct. Try this:` var speed=20.0;
function FixedUpdate () {

var torque=Vector3(Input.GetAxisRaw("Vertical"), 0, -Input.GetAxisRaw("Horizontal"));
if(torque.magnitude > 0.0){
    torque=Camera.main.transform.TransformDirection(torque);
    rigidbody.angularVelocity=Vector3.Lerp(rigidbody.angularVelocity, torque * 2, 0.3);
}

if (Input.GetKey(“w”))
{

rigidbody.AddRelativeTorque (2, 0, 0);

rigidbody.AddRelativeForce (2, 0, 0);
}

if (Input.GetKey(“s”))
{

rigidbody.AddRelativeTorque (-2, 0, 0);
rigidbody.AddRelativeForce (-2, 0, 0);
}

if (Input.GetKey(“a”))
{
rigidbody.AddRelativeTorque (0, 0, -2);
rigidbody.AddRelativeForce (0, 0, -2);
}

if (Input.GetKey(“d”))
{
rigidbody.AddRelativeTorque (0, 0, 2);
rigidbody.AddRelativeForce (0, 0, 2);
}
}`

Try to use Camera.mainCamera Instead Camera.main.

I use Camera.mainCamera on my scripts.

This question is still unanswered. Can someone please help me out.

This error means that some variable is empty, but at runtime the script is trying to use the thing that variable should be referencing to. It happens often when you forget to drag some object to an Inspector variable - like target in camera following scripts. Honestly, in your script the suspect #1 should be the Camera.main variable, but there are evidences of its innocence: the message error indicates line 7, and Camera.main is referenced in line 6 (at least in the fragment above), not to mention the fact that you surely would notice if there were no camera in the scene. In line 7, the only variable referenced is rigidbody, but when it’s empty Unity usually shows a different error message: (Missing Component Exception: There’s no ‘Rigidbody’…). If the rigidbody has a Joint, its Connected Body variable must be defined, or you may get an error.