我刚刚开始使用 Phaser。
我在屏幕中间有一个简单的 Sprite ,每当我单击该 Sprite 时,我就会在单击的 x,y 坐标处发射一个粒子。
我的问题是粒子是在 Sprite 后面生成的。我尝试将 Sprite 上的 z 设置为 1,将发射器设置为 1000,但没有成功。
我错过了什么?
var emitter = game.add.emitter(game.world.centerX, game.world.centeryY);
emitter.makeParticles('phaser');
var sprite = game.add.sprite(game.world.centerX, game.world.centerY, 'phaser');
sprite.scale.setTo(2, 2);
sprite.inputEnabled = true;
sprite.events.onInputDown.add(function(sender, pointer){
emitter.emitX = pointer.x;
emitter.emitY = pointer.y;
emitter.emitParticle();
}, this);
http://phaser.io/sandbox/cxBVeHrx
编辑
我的实际代码是基于 Phaser-ES6-Boilerplate 。尽管 BdRs 答案解决了沙箱代码中的问题,但我无法在实际代码中使用它。
我已经上传了 the code和一个running example 。希望有人能告诉我哪里搞砸了......
最佳答案
单独的 Phaser 项目没有 z 顺序,而是仅取决于您创建并将其添加到游戏
的顺序。每个新的 Sprite 或发射器或组等将显示在所有先前添加的项目之上。
因此,只需将代码更改为类似的内容就可以了。
// first the sprite
var sprite = game.add.sprite(game.world.centerX, game.world.centerY, 'phaser');
sprite.scale.setTo(2, 2);
// then the particles in front of sprite
var emitter = game.add.emitter(game.world.centerX, game.world.centeryY);
emitter.makeParticles('phaser');
// then maybe text in front of particles and sprite
var mytest = game.add.bitmapText(10, 20, 'myfont', 'Level 1', 16);
// etc.
顺便说一句, Sprite 确实有一个 .z
值,但仅当它是 Phaser.Group
的一部分时才使用,然后它将用作显示 z 顺序,但仅在该组 Sprite 中。
关于phaser-framework - Sprite 后面生成的粒子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32489272/