First Person Controller Target Shooting With Gun

I am developing small Game in which I have created first person controller with gun which is under the main camera of the first person. I have created prefab i want to target this prefab using gun and make explosion. But i am very new in unity so i don’t know how do i code to shoot target from my gun. I have tried code but it is throwing null pointer exception.

Here is my code:

function Update(){
  
      Shoot();
 	 
} 

function Shoot(){
	//if (shotSound) audio.PlayOneShot(shotSound); // play the shot sound
   	var hit: RaycastHit;
	var ray : Ray = Camera.main.ViewportPointToRay (Vector3(0.5,0.5,0));
	 
	if (Physics.Raycast (ray))
	{
	    //var rot = Quaternion.FromToRotation(Vector3.up, hit.normal);
	 
	    if (hit.transform.tag == "Pickup"){ // if enemy hit...
	       //pickupController.Collected(hit.gameObject);
	        Debug.DrawLine (ray.origin, hit.point);
    	}
	}	   
}

I have also reffered script refference for raycast. pleaze help me to solve my problem.

You are getting the null pointer exception because you are not passing in hit as a parameter to Raycast() should be:

if (Physics.Raycast(ray, hit))

As for the rest, are you shooting a projectile, or is this a ray gun? An do you have any animation or script that shows an explosion?