x


Particle Emmiter 'forgets' to stop emitting?

I have this script:

var projectile : Rigidbody;
var initialSpeed = 20.0;
var reloadTime = 0.5;
var ammoCount = 20;
private var lastShot = -10.0;
var MuzzleParticles : GameObject;
function Start () {
MuzzleParticles.particleEmitter.emit = false;

}

function Fire () {
    // Did the time exceed the reload time?
    if (Time.time > reloadTime + lastShot && ammoCount > 0) {
        // create a new projectile, use the same position and rotation as the Launcher.
        var instantiatedProjectile : Rigidbody = Instantiate (projectile, transform.position, transform.rotation);

        // Give it an initial forward velocity. The direction is along the z-axis of the missile launcher's transform.
        instantiatedProjectile.velocity = transform.TransformDirection(Vector3 (0, 0, initialSpeed));

        // Ignore collisions between the missile and the character controller
        Physics.IgnoreCollision(instantiatedProjectile.collider, transform.root.collider);

        audio.Play();
        lastShot = Time.time;
        ammoCount--;
        MuzzleParticles.particleEmitter.emit = true;
    }
    else {
    MuzzleParticles.particleEmitter.emit = false;
    }
}

It's a variation of the FPS tut's Rocket Launcher Script. What i'm trying to get happen, is that, user presses fire, particles (MuzzleParticles) Start, but if he's not firing, turn them off. However, if i keep the trigger down, sometimes the particles carry on emitting. What can I do to fix this?

more ▼

asked Dec 13 '10 at 01:15 PM

Fishman92 gravatar image

Fishman92
2.4k 101 113 128

I had this problem, and it took me a while to figure out how I could do it... I got it fully working, but then I stopped it bc the problem is, if you have your particle system moving through the emitter, than it wont cause damage (Depending on how you do it) because the spawn for the particle system isn't moving, it's just the particles themselves... But what I did, is something along the lines of Input.OnButtonUp("Fire1"){//input all the stuff to stop emitting here}

Dec 13 '10 at 03:30 PM Justin Warner

Also, it isn't forgetting, lol, just go through your code logically, how is the computer reading it? It's how I fixed it when I had to do it...

Dec 13 '10 at 03:32 PM Justin Warner

Well OnButtonUp kinda works, but it still is doing this 'forgetting' thing.

Dec 13 '10 at 03:56 PM Fishman92
(comments are locked)
10|3000 characters needed characters left

1 answer: sort voted first

When you fire, you set emit to true, but then you don't set it to false unless you call fire again and your boolean condition proves false. To get this code to stop emitting, you would either have to call Fire twice within 1/2 a second or call Fire 21 times.

You could try something like calling a co-routine which will stop emission after n seconds. To prevent unwanted shut-offs, don't forget to stop the running co-routine before starting a new one.

more ▼

answered Dec 13 '10 at 04:09 PM

skovacs1 gravatar image

skovacs1
10k 11 25 92

(comments are locked)
10|3000 characters needed characters left
Your answer
toggle preview:

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Topics:

x659
x26

asked: Dec 13 '10 at 01:15 PM

Seen: 1357 times

Last Updated: Dec 13 '10 at 01:15 PM