'FPS Tutorial' Machine Gun Script not working

I am using the 'FPS Tutorial' "Machine Gun" script, and it doesn't seem to be working. There are no error messages, no particles (I attached one as a child). Is there something wrong with it, or is it my game?

Here's the script:

var range = 100.0;
var fireRate = 0.05;
var force = 10.0;
var damage = 5.0;
var bulletsPerClip = 40;
var clips = 20;
var reloadTime = 0.5;
private var hitParticles : ParticleEmitter;
var muzzleFlash : Renderer;

private var bulletsLeft : int = 0;
private var nextFireTime = 0.0;
private var m_LastFrameShot = -1;

function Start () {
    hitParticles = GetComponentInChildren(ParticleEmitter);

    // We don't want to emit particles all the time, only when we hit something.
    if (hitParticles)
        hitParticles.emit = false;
    bulletsLeft = bulletsPerClip;

function LateUpdate() {
    if (muzzleFlash) {
        // We shot this frame, enable the muzzle flash
        if (m_LastFrameShot == Time.frameCount) {
            muzzleFlash.transform.localRotation = Quaternion.AngleAxis(Random.value * 360, Vector3.forward);
            muzzleFlash.enabled = true;

            if (audio) {
                if (!audio.isPlaying)
                audio.loop = true;
        } else {
        // We didn't, disable the muzzle flash
            muzzleFlash.enabled = false;
            enabled = false;

            // Play sound
            if (audio)
                audio.loop = false;

function Fire () {
    if (bulletsLeft == 0)

    // If there is more than one bullet between the last and this frame
    // Reset the nextFireTime
    if (Time.time - fireRate > nextFireTime)
        nextFireTime = Time.time - Time.deltaTime;

    // Keep firing until we used up the fire time
    while( nextFireTime < Time.time && bulletsLeft != 0) {
        nextFireTime += fireRate;

function FireOneShot () {
    var direction = transform.TransformDirection(Vector3.forward);
    var hit : RaycastHit;

    // Did we hit anything?
    if (Physics.Raycast (transform.position, direction, hit, range)) {
        // Apply a force to the rigidbody we hit
        if (hit.rigidbody)
            hit.rigidbody.AddForceAtPosition(force * direction, hit.point);

        // Place the particle system for spawing out of place where we hit the surface!
        // And spawn a couple of particles
        if (hitParticles) {
            hitParticles.transform.position = hit.point;
            hitParticles.transform.rotation = Quaternion.FromToRotation(Vector3.up, hit.normal);

        // Send a damage message to the hit object          
        hit.collider.SendMessageUpwards("ApplyDamage", damage, SendMessageOptions.DontRequireReceiver);


    // Register that we shot this frame,
    // so that the LateUpdate function enabled the muzzleflash renderer for one frame
    m_LastFrameShot = Time.frameCount;
    enabled = true;

    // Reload gun in reload Time        
    if (bulletsLeft == 0)

function Reload () {

    // Wait for reload time first - then add more bullets!
    yield WaitForSeconds(reloadTime);

    // We have a clip left reload
    clips -= 1;
    bulletsLeft = bulletsPerClip;

function GetBulletsLeft () {
    return bulletsLeft;

maybe put out the script or your game online so i can have more information on answering it

There is probably something wrong with the game. In your start function, you have the line `hitParticles = GetComponentInChildren(ParticleEmitter);`, which would find your particle emitter that you attached as a child. If you are using the fps tutorial that unity technologies made, then there should be an fpsPlayer prefab (Not to be mistaken with the fpsControllerPrefab or anything else like that) that already has the machine gun and the rocket launcher attached and functional.

the most likely problem is that your machine gun that you have false on a lot of things in this script one idea is that your gun is shooting but every thing is set to false so that the muzzle flash the hit particles and the sound is false so you dont here or see it the other idea is that you dont have bullet prefab check but that is vary unlikely one again like the other guy i would need to see it in action to tell witch problem it is or if is nether problem i hope this helped you.

You might have it set up incorrectly , check your values , if you have bulletsperclip set to 0 for example it may not work

you mean that you got everything else working ( raycast apply damage, enemies shooting you/ walking ) except the particles? Try re-positioning your particle prefab in front of your gun to see if that helps

to create a machine gun 1 add an empty game object and rename it to weapons and add it as a child object to the FPC(First person Controller) 2 create another empty game object and add it as a child to weapons game object named machine gun 3 then add the machine gun asset the Machine gun empty game object. 4 then add the machine gun script into the empty machine gun game object. 5 add the player weapons script to the weapons game object 6 select the empty machine gun object and set the mussle flash as the mussle flash attecahed to the machine gun asset in the Hireychy view as the muscle flash 7. add a particle to the empty machine gun game object like sparks 8. play game!

you need to make a game object named weapons drag it under the main camera of the first person controller drag ur gun(s) under the weapons gameobject and then add the player weapons script to the weapons gameobject. Happy Game Making. - Gab