How to set a firerate on this?

I want to make it so the projectile only can shoot 1 time per second.

var rocketPrefab: Transform;
var rocketSpeed: float = 20;
var spawnPoint: Transform;
function Start(){

}
function Update () { 
if (Input.GetButtonDown("Fire1")){ // create a ray from the center of the screen 
GetComponent.<AudioSource>().pitch = 2;
GetComponent.<AudioSource>().Play();
var ray: Ray = Camera.main.ViewportPointToRay(Vector3(0.5,0.5,0)); var hit: RaycastHit; var dir: Vector3; if (Physics.Raycast(ray, hit)){ // if something aimed // find the direction from spawnPoint to the target 
dir = (hit.point - spawnPoint.position).normalized; 
} 
else { // if there's nothing, use the ray direction 
dir = ray.direction; // spawnPoint.forward works too (see note below) 
}
 var rot = Quaternion.FromToRotation(rocketPrefab.forward, dir); // instantiate the rocket 
 var rocket = Instantiate(rocketPrefab, spawnPoint.position, rot); // launch the rocket 
 rocket.GetComponent(Rigidbody).velocity = dir*rocketSpeed; 
 } 
}

try -

using UnityEngine;
using System.Collections;

public class test : MonoBehaviour
{
	public float fireRate;
	
	private float nextFire; //set the time between shots

	void Update()
	{
		if (Input.GetButton("Fire1") && Time.time > nextFire) 
		{
			nextFire = Time.time + fireRate;
			GetComponent.<AudioSource>().pitch = 2;
			GetComponent.<AudioSource>().Play();
			var ray: Ray = Camera.main.ViewportPointToRay(Vector3(0.5,0.5,0)); var hit: RaycastHit; var dir: Vector3; if (Physics.Raycast(ray, hit)){ // if something aimed // find the direction from spawnPoint to the target 
				dir = (hit.point - spawnPoint.position).normalized; 
			} 
			else { // if there's nothing, use the ray direction 
				dir = ray.direction; // spawnPoint.forward works too (see note below) 
			}
			var rot = Quaternion.FromToRotation(rocketPrefab.forward, dir); // instantiate the rocket 
			var rocket = Instantiate(rocketPrefab, spawnPoint.position, rot); // launch the rocket 
			rocket.GetComponent(Rigidbody).velocity = dir*rocketSpeed; 
		}


	}
}

:slight_smile:

Try this out…

public float delay = 0;
public float rate = 1f;

void Update()
{
   if (Input.GetButton("Fire1")) 
   {
       InvokeRepeating("Fire", delay, rate);
   }
}  

void Fire()
{
   //Instantiate prefab or wateva
} 

Hope it helps :slight_smile: