How to make a delay between shots in Javascript?

When I click, the Laser doesn’t shoot (It was shooting before I implemented fireSpeed and fireDealy.)
I have the fireSpeed set to 50 in the Inspector.

#pragma strict

var laser : Rigidbody;
var force : float;
var position : Transform;

var fireSpeed : float;
var fireDelay : float;

function Update ()
{
    if(Input.GetButtonDown("Fire1"))
    {
        if(fireDelay <= 0)
        {
            var instanceLaser = Instantiate(laser, transform.position, position.rotation);
            instanceLaser.rigidbody.AddForce(position.right * force);
            fireDelay= 1;
        }
    }
}
fireDelay = Time.deltaTime * fireSpeed;

Try something like this :

if(Input.GetButtonDown("Fire1") && Time.time > fireDelay){
fireDelay = Time.time + fireSpeed;
var instanceLaser = Instantiate(laser, transform.position, position.rotation);
instanceLaser.rigidbody.AddForce(position.right * force);
}

Set fireSpeed to how many times per second your laser should shoot.

1 Like