Sorry my UnityScript is horrible. But the problem you are having is that you cannot use “Yield WaitForSeconds(2)” in an update function. You need to move it into a coroutine and call it separately.
Take a look over at a similar question I had, it might help:
But basically, you want to move your Yield statement into an IEnumerator and perform your wait logic there.
var prefabBullet:Transform;
var shootForce:float;
var shots : int = 0;
var maxShots : int = 8;
var shootSound : AudioClip;
function Update()
{
if(Input.GetButtonDown("Fire1") && shots < maxShots)
{
var instanceBullet = Instantiate(prefabBullet, transform.position, Quaternion.identity);
instanceBullet.rigidbody.AddForce(transform.forward * shootForce);
audio.PlayOneShot(shootSound);
shots++;
//yield WaitForSeconds(2); -- REMOVE THIS MOVE TO IENUM CALL COROUTINE
StartCoroutine(Wait());
//Destroy (prefabBullet); -- REMOVE THIS MOVE TO COROUTINE
}
else if (shots >= maxShots && Input.GetKeyDown(KeyCode.R))
{
shots = 0;
}
}
IEnumerator wait() {
return new Yield WaitForSeconds(2);
Destroy(prefabBullet);
{