How to change just one axis scale from a particle

Recommended Posts

I'm trying to create a dash fade effect behind the player when it's executing the dodge ability. I'm doing this with a particle emitter (dashEm). It's all good except from one thing the particle sprites on the trail aren't going in the player direction, they don't scale in X axis.

How it should be in both directions:


The actual problem, when player goes to left:


The Player scaleX changes whenever the player presses left or right key.

measures.last.dir = (pressedKeys.right)?1:-1
player.scale.setTo(measures.last.dir*2.5, 2.5)

The emitter min and max scale are set to 2.5 same as player.

dashEm = game.add.emitter(0, 0, 200);
dashEm.minParticleScale = 2.4;
dashEm.maxParticleScale = 2.6;
dashEm.lifespan = 400;
dashEm.minRotation = 0;
dashEm.maxRotation = 0;
dashEm.minParticleSpeed.setTo(0, 0);
dashEm.maxParticleSpeed.setTo(0, 0);
dashEm.gravity = -1400; // fix global gravity


The update. If the dodge happens I update the emitter position, set the trail direction(particles speed), and release them.

dashEm.x = player.x;
dashEm.y = player.y;

dashEm.minParticleSpeed.setTo(-100*measures.last.dir, 0);
dashEm.maxParticleSpeed.setTo(-1000*measures.last.dir, 0);



What I've tried in update

I've tried to attach the emitter as a child of player. But when the player changes its direction (scaleX) emitter also change and trail suddenly change too (logical it's his child).

I've tried to change directly emitter scale. It works fine for right direction but when facing left the emitter and trail just disappear.

dashEm.scale = new Phaser.Point(1*measures.last.dir, 1)

I've tried to use setScale emitter method. But all it does is reduce the scale of the particles to 1. Not even put them in the right direction, no matter what values I enter.

sx = 2.5 *measures.last.dir
sy = 2.5
dashEm.setScale(sx, sx, sy, sy)

I've tried modifying every property in the emitter that has something to do with the word scale and nothing works.

I'cant use the default minParticleScale & maxParticleScale because this properties modify the both axis X & Y. I just need to change X axis, otherwise the trail would be upside down.



Last thing! Reading the docs I've found in minParticleScale  the sentence "If you need to control each axis see minParticleScaleX" but there's no such property nor function!.


Hope I posted it well. Thanks for the help guys!



Share this post

Link to post
Share on other sites
  • Try the latest Phaser CE (if not already). Emitter had a bug where it would ignore identical min/max values for scale.
  • Avoid setting dashEm.scale because that flips the whole "layer" of particles.
  • You may not need to attach the emitter as a child of the player. All you really need is to set (emitX, emitY) to the player's position at the time the emitter starts.
  • You can monitor the emitter with phaser-debug-emitter.

Share this post

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.