What is wrong with my torch script

Hey I got this C# script for a torch but it wouldn’t work, what it is suppose to do is, when I press the Q button the torch object’s (Spotlight) intensity should go to 4 and when I press it again the intensity should go to 0.

here is the script

    public bool TorchOn = false;
    public GameObject TorchLight;

// Use this for initialization
void Start () 
{

}

// Update is called once per frame
void Update () 
{
	if (TorchOn == false && Input.GetKey ("q"))
	{
		TorchLight.light.intensity = 4.0f;
		TorchOn = true;
	}
	
	if (TorchOn == true && Input.GetKey ("q"))
	{
		TorchLight.light.intensity = 0.0f;
		TorchOn = false;
	}
}

that is the script if you guys/girls know what I did wrong please help me :smiley:

Your using Input.GetKey. Every frame your holding down Q, the light is flashing on, and then off, in the same frame. Structure your script better and use Input.GetKeyDown instead. It should look more like this:

if(Input.GetKeyDown("q")) {
	if(torchOn) {
		torchLight.light.intensity = 4.0f;
      	torchOn = true;
	}
	else {
		torchLight.light.intensity = 0.0f;
      	torchOn = false;
	}
}

NOTE: I’m not a C# person. I prefer javascript. But I do know how to read it. If it doesn’t work, it may be a syntax thing.

If your new to scripting, check out this list of tutorials:

List Of Tutorials

I hope this is what your looking for.