This fire script results in a stationary bullet.

Can anyone help me with this script. When I fire the weapon, a bullet sticks in position above ground. What is happening? Do I need an extra script for the bullet?

// Instantiates a projectile every 0.5 seconds,
// if the Fire1 button (default as Ctrl) is pressed.
var projectile : GameObject;
var fireRate : float = 0.5;
private var nextFire : float = 0.0;
function Update () {
	if (Input.GetButton ("Fire1") && Time.time > nextFire){
		nextFire = Time.time + fireRate;
		var clone : GameObject = 
			Instantiate(projectile,transform.position, transform.rotation) as GameObject;
	}
}

you need a script on the bullet that tells it to move; right now all you are doing is instantiaing it, so the script on your bullet should look something like this.

function Update() {  
 
 // Move the object forward along its z axis 1 unit/second.   
 transform.Translate(Vector3.forward * Time.deltaTime);

}

then you would have what you want the bullet to do in this script like applyying damage