Hey i need a gun script for unity

Im using particals and a script from the fps tut to make a colt anaconda but when ever i try to make it work the particals dont emit. Heres the script

var range = 100.0;
var fireRate = 0.09;
var force = 50.0;
var damage = 50.0;
var bulletsPerClip = 6;
var clips = 3;
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.Play();
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)
return;

// 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) {
FireOneShot();
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);
hitParticles.Emit();
}

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

bulletsLeft–;

// 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)
Reload();
}

function Reload () {

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

// We have a clip left reload
if (clips > 0) {
clips–;
bulletsLeft = bulletsPerClip;
}
}

function GetBulletsLeft () {
return bulletsLeft;
}

ANy help on this subject would be great. Im new to unity so…

Edit your post with ‘code’ tags.

they are (this is reversed) [/code] [code]this is proper

I dont know what you guys are talkin bout srry

Edit your post and follow these instructions:

  1. write
2. Write your code.
3. write [ /code] (without the space)

var range = 100.0;
var fireRate = 0.09;
var force = 50.0;
var damage = 50.0;
var bulletsPerClip = 6;
var clips = 3;
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.Play();
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)
return;
// 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) {
FireOneShot();
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);
hitParticles.Emit();
}

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

bulletsLeft–;
// 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)
Reload();
}
function Reload () {
// Wait for reload time first - then add more bullets!
yield WaitForSeconds(reloadTime);
// We have a clip left reload
if (clips > 0) {
clips–;
bulletsLeft = bulletsPerClip;
}
}
function GetBulletsLeft () { return bulletsLeft;
}

If thats what you mean

ok, just do this (I put a

 to start it) [code]var range = 100.0;
var fireRate = 0.09;
var force = 50.0;
var damage = 50.0;
var bulletsPerClip = 6;
var clips = 3;
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.Play();
              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)
        return;
        // 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) {
                     FireOneShot();
                     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);
       hitParticles.Emit();
   }

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

bulletsLeft--;
// 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)
Reload();	
}
function Reload () {
// Wait for reload time first - then add more bullets!
yield WaitForSeconds(reloadTime);
// We have a clip left reload
if (clips > 0) {
clips--;
bulletsLeft = bulletsPerClip;
}
}
function GetBulletsLeft () {	return bulletsLeft;
}

and then I put a [ /code] (without the space) to end it

No, thats not what I meant. Delete that post, and edit your first one by doing the following:

Click “Go Advanced”, highlight your code, and click on the # sign. It will add the ‘code’ tags for you.

EDIT: JM beat me to it, but you should still try to edit your opening post, so the spacing is correct.