我正在尝试创建一个街机平台,在该平台上,我的角色在跑步时会散发出一些小的灰尘颗粒。但我仍然可以让它看起来不错,我是粒子发射器的超级新手,有太多的变量要改变,我有点迷茫,也找不到任何关于 Phaser 粒子发射器的教程,只有一些例子。我什至从 Phaser 购买了 ParticleStorm,但仍然无法使其正常工作。
这是粒子代码和Player.ts
类中的字符。
this.game = game;
game.physics.arcade.enable(this);
this.body.gravity.y = Player.GRAVITY;
this.body.velocity.x = 0;
this.body.maxVelocity = 500;
// Allow finger inputs on iOS/Android
this.inputEnabled = true;
this.events.onInputDown.add(this.handleInputDown, this);
// Setup keyboard cursors
this.cursors = this.game.input.keyboard.createCursorKeys();
this.animations.add('running', [5, 6, 7, 8], 20, true);
this.dustEmitter = this.game.add.emitter(0, 0, 5);
this.dustEmitter.makeParticles('dust');
this.dustEmitter.setAlpha(0.9, 1, 200);
this.dustEmitter.setScale(0.3, 1, 0.3, 1, 100, Phaser.Easing.Circular.Out);
// this.dustEmitter.minParticleScale = 0.8;
// this.dustEmitter.maxParticleScale = 1;
// this.dustEmitter.minRotation = -360;
// this.dustEmitter.maxRotation = 360;
this.dustEmitter.setXSpeed(0, 0);
this.dustEmitter.setYSpeed(0, 0);
this.dustEmitter.enableBody = true;
this.dustEmitter.gravity.set(-100, -100);
this.dustEmitter.start(false, 300, 25, -1);
然后在我的播放器代码上的 update() 函数中,我根据播放器的位置更新发射器位置:
if (this.playerState === PlayerState.RUNNING) {
this.dustEmitter.visible = true;
this.dustEmitter.emitX = this.x;
this.dustEmitter.emitY = this.y + (this.height / 2);
} else {
this.dustEmitter.visible = false;
}
我尝试了很多东西,更改变量,甚至尝试使用phaser-particle-editor
网站来玩这些值,但我什至无法在我的 Phaser 游戏中复制它,即使我在网站中输入了相同的确切值。
最好的方法是什么?根据玩家的位置更新发射器位置好吗?还是我应该做点别的?我认为主要的想法或我的想法是......粒子实际上不应该跟随玩家,而是留在他们最初出现的地方。一旦玩家开始移动,灰尘就会跟随玩家的 X 和 Y 重生。但是我如何使用粒子发射器来实现这一点?
提前致谢。