mrbird Posted May 18, 2017 Share Posted May 18, 2017 Hello there, I am not getting any results with particle collision detection. I am able to detect collision on sprite (bird touching ground or branch), but I am unable to detect collision or even overlap with the particle emitter (rain). The rain (particles) fall on the bird, yet there is no detection or error in the code. Very confusing. If anyone can see what am I doing wrong / what did I forgot to add to the code I will be very thankful. var GameState = { init: function() { this.game.physics.startSystem(Phaser.Physics.ARCADE); this.game.physics.arcade.gravity.y = 1000; this.game.world.setBounds(0,0,game.width + 100, game.height); }, create: function() { var bounds = new Phaser.Rectangle(0 - 50, 0, game.width + 50, 400); this.background = this.game.add.sprite(0, 0, 'background'); this.background.inputEnabled = true; this.background.events.onInputDown.add(moveBird, this); this.ground = this.game.add.sprite(0, game.height-355, 'ground'); this.underground = this.game.add.sprite(0, game.height-49, 'underground'); //this.underground.inputEnabled = true; this.game.physics.arcade.enable(this.underground); this.underground.body.allowGravity = false; this.underground.body.immovable = true; this.cloud1 = this.game.add.sprite(10, 10, 'cloud1'); this.cloud1.anchor.setTo(0.5); this.cloud1.inputEnabled = true; this.cloud1.input.enableDrag(true); this.cloud1.input.boundsRect = bounds; this.game.physics.arcade.enable(this.cloud1); this.cloud1.body.allowGravity = false; this.branch = this.game.add.sprite(900, 350, 'branch'); this.branch.anchor.setTo(0.5); this.game.physics.arcade.enable(this.branch); this.branch.body.allowGravity = false; this.branch.body.immovable = true; this.bird = this.game.add.sprite(800,120, 'bird'); this.bird.anchor.setTo(0.5); this.game.physics.arcade.enable(this.bird); this.bird.inputEnabled = true; this.bird.input.enableDrag(); this.game.camera.follow(this.bird); //create an emitter rain = game.add.emitter(0, 0, 1000); rain.makeParticles('rain'); // Attach the emitter to the sprite this.cloud1.addChild(rain); //position the emitter relative to the sprite's anchor location rain.y = 30; rain.x = 0; //rain.lifespan = 500; rain.width = 160; // setup options for the emitter rain.minParticleScale = 0.1; rain.maxParticleScale = 0.5; rain.setYSpeed(300, 500); rain.setXSpeed(-5, 5); rain.minRotation = 0; rain.maxRotation = 0; this.cloud1.events.onInputDown.add(cloudDrag1, this); cloud1Moving = game.add.tween(this.cloud1).to({ x: game.width + 300 }, 120000, Phaser.Easing.Linear.None, true, 0, 1000, true) function cloudDrag1(sprite, pointer) { rain.start(false, 1600, 5, 0); this.game.physics.arcade.enable(rain); console.log(rain); game.time.events.add(Phaser.Timer.SECOND * 7, stopRaining, this); function stopRaining(){ rain.on = false; } } this.cloud1.events.onDragStart.add(onDragStart, this); this.cloud1.events.onDragStop.add(onDragStop, this); function onDragStart(sprite, pointer) { cloud1Moving.stop(); cloud1Moving.pendingDelete = false; } function onDragStop(sprite, pointer) { cloud1Moving.updateTweenData(5000); cloud1Moving.start(); } function moveBird(sprite, event) { var x = event.position.x; var y = event.position.y; var birdMovement = this.game.add.tween(this.bird); birdMovement.to({x: x, y: y}, 700); this.bird.body.allowGravity = false; console.log('bird is flying'); birdMovement.start(); } }, update: function() { this.game.physics.arcade.collide(this.bird, this.underground, this.landedGround); this.game.physics.arcade.collide(this.bird, this.branch, this.landedBranch); this.game.physics.arcade.overlap(this.bird, rain, this.change); }, landedGround: function(bird, underground){ console.log('bird landed on ground...'); //console.log(rain); }, landedBranch: function(bird, branch){ console.log('bird landed on branch...'); }, change: function(l, r){ console.log('touched rain...'); }, }; Link to comment Share on other sites More sharing options...
samid737 Posted May 19, 2017 Share Posted May 19, 2017 try adding the third or/and fourth argument for makeParticles. Here is an example as an extra reference:https://phaser.io/examples/v2/particles/when-particles-collide Link to comment Share on other sites More sharing options...
mrbird Posted May 19, 2017 Author Share Posted May 19, 2017 @samid737 Thank you for your reply. I saw this tutorial and even added it into my game before I posted here. I tried to add it to my game and tested if the particles from this demo will collide, but this does not work either. The emitters emit particles and the particles bounce off but when colliding with bird nothing happens. Link to comment Share on other sites More sharing options...
Recommended Posts