Particle Emitter in HaxePunk

For some this will be a trivial example. For me this took a bit longer than I suspected.

This small example will produce this:

If you’re planning on making an awesome game you probably want a particle emitter. because.. well look at it.

What I did is I started a haxepunk project:

`For some this will be a trivial example. For me this took a bit longer than I suspected.

This small example will produce this:

If you’re planning on making an awesome game you probably want a particle emitter. because.. well look at it.

What I did is I started a haxepunk project:

`

And added a file: Explosion.hx

The Emitter is also a type of Entity, and also needs a graphic. It looks like this:

import com.haxepunk.graphics.Emitter;
import com.haxepunk.utils.Ease;
import com.haxepunk.Entity;

class Explosion extends Entity
{
    private var _emitter:Emitter;

    public function new()
    {
        super(x, y);
        _emitter = new Emitter("graphics/particle.png", 4, 4);
        _emitter.newType("explode", [0]);
        _emitter.setMotion("explode",       // name
                    0,              // angle
                    100,            // distance
                    2,              // duration
                    360,            // ? angle range
                    -40,            // ? distance range
                    1,              // ? Duration range
                    Ease.quadOut    // ? Easing 
                    );
        _emitter.setAlpha("explode", 20, 0.1);
        _emitter.setGravity("explode", 5, 1);
        graphic = _emitter;
        layer = -1;
    }

    public function explode(x:Float, y:Float)
    {
        for (i in 0...20)
        {
            _emitter.emit("explode", x, y);
        }
    }


}

Then you can add the Emitter to your current scene like in my MainScene.hx

It looks like this:

import com.haxepunk.Scene;
import Explosion;

class MainScene extends Scene
{
    private var explosion:Explosion;

    public override function begin()
    {
        explosion = new Explosion();
        add(explosion);
    }

    public override function update()
    {
        super.update();
        explosion.explode(230, 240);
    }
}

Now run

lime test neko

And you should see something similar to the emitter above.

You can checkout my repo and run it to play around with it.

I ran into this error below. It meant my sprite was too small. It took me a long time to realize that.

``For some this will be a trivial example. For me this took a bit longer than I suspected.

This small example will produce this:

If you’re planning on making an awesome game you probably want a particle emitter. because.. well look at it.

What I did is I started a haxepunk project:

`For some this will be a trivial example. For me this took a bit longer than I suspected.

This small example will produce this:

If you’re planning on making an awesome game you probably want a particle emitter. because.. well look at it.

What I did is I started a haxepunk project:

`

And added a file: Explosion.hx

The Emitter is also a type of Entity, and also needs a graphic. It looks like this:

import com.haxepunk.graphics.Emitter;
import com.haxepunk.utils.Ease;
import com.haxepunk.Entity;

class Explosion extends Entity
{
    private var _emitter:Emitter;

    public function new()
    {
        super(x, y);
        _emitter = new Emitter("graphics/particle.png", 4, 4);
        _emitter.newType("explode", [0]);
        _emitter.setMotion("explode",       // name
                    0,              // angle
                    100,            // distance
                    2,              // duration
                    360,            // ? angle range
                    -40,            // ? distance range
                    1,              // ? Duration range
                    Ease.quadOut    // ? Easing 
                    );
        _emitter.setAlpha("explode", 20, 0.1);
        _emitter.setGravity("explode", 5, 1);
        graphic = _emitter;
        layer = -1;
    }

    public function explode(x:Float, y:Float)
    {
        for (i in 0...20)
        {
            _emitter.emit("explode", x, y);
        }
    }


}

Then you can add the Emitter to your current scene like in my MainScene.hx

It looks like this:

import com.haxepunk.Scene;
import Explosion;

class MainScene extends Scene
{
    private var explosion:Explosion;

    public override function begin()
    {
        explosion = new Explosion();
        add(explosion);
    }

    public override function update()
    {
        super.update();
        explosion.explode(230, 240);
    }
}

Now run

lime test neko

And you should see something similar to the emitter above.

You can checkout my repo and run it to play around with it.

I ran into this error below. It meant my sprite was too small. It took me a long time to realize that.

``


Words by fritzvd

comments powered by Disqus