Why isn't my input detected 100% of the time?

I have a script for shooting a weapon. But for some reason it doesn’t shoot all the time. Here’s the code:

public class Weapon01 : MonoBehaviour 
{
  private float bulletSpeed = 100000;
  private bool isFire = false;
  

  void Update ()
  {
    if (Input.GetMouseButtonDown (0))
    {
      isFire = true;
    }
    else
    {
      isFire = false;
    }
  }//endmethod
/*----------------------------------------------------------------------------*/  
	// Update is called once per frame
	void FixedUpdate () 
  { 
	  GameObject bullet;
    RaycastHit hit = new RaycastHit ();
    Ray gun = new Ray (transform.position, transform.right);
    Debug.DrawRay (gun.origin, gun.direction * 1000, Color.black);
    
    if (isFire == true)
    {
      audio.Play(); 
      //instantiates bullet
      bullet = (GameObject)Instantiate(Resources.Load ("Weapon01Bullet01"), 
                transform.position, transform.rotation);
      //shoots bullet at vector3 position
      bullet.rigidbody.AddForce(gun.direction*bulletSpeed);
      Debug.DrawRay (gun.origin, gun.direction * hit.distance, Color.red); 
    }
    
	}//endmethod
/*----------------------------------------------------------------------------*/
}

That’s because FixedUpdate does not necessarily run every frame, so it’s quite possible that isFire is set to true then false before the next FixedUpdate runs. Just remove FixedUpdate and put all the code in Update.