ourcade / phaser3-vite-template

Make Phaser 3 games with modern frontend tooling.
https://youtu.be/isSXKBcuWxw
MIT License
75 stars 39 forks source link

Error ParticleEmitterManager was removed in Phaser 3.60 #3

Open yosle opened 1 year ago

yosle commented 1 year ago

Hi , I'm totally new in Phaser , just downloaded the repository and yarn on it: the project shows this error in the console:

Uncaught Error: createEmitter removed. See ParticleEmitter docs for info
    at ParticleEmitter2.createEmitter (phaser.js:66171:15)
    at HelloWorldScene.create (HelloWorldScene.js:21:29)
    at SceneManager2.create (phaser.js:193257:26)
    at SceneManager2.loadComplete (phaser.js:193164:14)
    at LoaderPlugin2.emit (phaser.js:200:35)
    at LoaderPlugin2.loadComplete (phaser.js:118144:14)
    at LoaderPlugin2.fileProcessComplete (phaser.js:118110:18)
    at ImageFile2.onProcessComplete (phaser.js:116909:21)
    at data.onload (phaser.js:123186:19)

Had to comment all the reference to the Particle emitter in MainWorldScene.js:

import Phaser from 'phaser'

export default class HelloWorldScene extends Phaser.Scene {
    constructor() {
        super('hello-world')
    }

    preload() {
        this.load.setBaseURL('https://labs.phaser.io')

        this.load.image('sky', 'assets/skies/space3.png')
        this.load.image('logo', 'assets/sprites/phaser3-logo.png')
        this.load.image('red', 'assets/particles/red.png')
    }

    create() {
        this.add.image(400, 300, 'sky')

        // const particles = this.add.particles('red')

        // const emitter = particles.createEmitter({
        //  speed: 100,
        //  scale: { start: 1, end: 0 },
        //  blendMode: 'ADD',
        // })

        const logo = this.physics.add.image(400, 100, 'logo')

        logo.setVelocity(100, 200)
        logo.setBounce(1, 1)
        logo.setCollideWorldBounds(true)

        // emitter.startFollow(logo)
    }
}
micheg commented 1 year ago

in phaser 3.6 the particle system has been rewritten, you don't have to remove the code just change it a little.`

import Phaser from 'phaser';
export default class HelloWorldScene extends Phaser.Scene
{
    constructor()
    {
        super('hello-world');
    }

    preload()
    {
        this.load.setBaseURL('https://labs.phaser.io');
        this.load.image('sky', 'assets/skies/space3.png');
        this.load.image('logo', 'assets/sprites/phaser3-logo.png');
        this.load.image('red', 'assets/particles/red.png');
    }

    create()
    {
        this.add.image(400, 300, 'sky');

        const emitter = this.add.particles(0, 0, 'red', {
            speed: 100,
            scale: { start: 1, end: 0 },
            blendMode: 'ADD',
        });

        const logo = this.physics.add.image(400, 100, 'logo');

        logo.setVelocity(100, 200);
        logo.setBounce(1, 1);
        logo.setCollideWorldBounds(true);

        emitter.startFollow(logo);
    }
}