Luis Felipe Posted March 9, 2014 Share Posted March 9, 2014 Hello there I'm trying to figure out a way to propel the player once it is hit by a bomb(= death). First, in the update() function I'm checking if the player is alive, if false then I call a deadHero() function where I have this:deadHero: function(){ this.hero.body.velocity.y = -500; }But since, I think, the function is being called into the update function, it continuously adds velocity to the player. I get this, but looking at the Click Burst example in the Phaser docs, I see that the emitter is called from the create() function which results in the function being called only once and not continuously 60FPS. How could I do the same but having it only act once the player is dead? Any help would be greatly appreciated! Thanks!! Luis Link to comment Share on other sites More sharing options...
spmurrayzzz Posted March 9, 2014 Share Posted March 9, 2014 Totally doable, but I think you should subscribe to the onKilled event to do this (pub/sub is a much nicer pattern to follow). Without seeing your code its tough to write you something 100% correct, but it'd look kind of like this.someSprite.events.onKilled.dispatch = function(){ deadHero();};// Note that im not sure what your "this" context is referring to, but if you needed to pass that context you could dosomeSprite.events.onKilled.add(function(){ deadHero.call(this);}.bind(someContext));EDIT: Just realized this is not gonna help you because the onKilled event happens after your sprite is killed and your deadHero method references the dead sprite. The workaround here is to have your deadHero() function load a new sprite animation at the current x/y coordinate of your dead hero. Luis Felipe 1 Link to comment Share on other sites More sharing options...
Luis Felipe Posted March 9, 2014 Author Share Posted March 9, 2014 Awesome, thanks for your reply, It helped a lot! I ended up changing it a wee bit to make it work: this.indicator.events.onKilled.add(this.deadHero, this);I just added an indicator that is killed once the player touches the bomb, and when this is killed. I had to do this because otherwise I had to kill the player and it would just disappear Thanks! Link to comment Share on other sites More sharing options...
Luis Felipe Posted March 9, 2014 Author Share Posted March 9, 2014 EDIT: Just realized this is not gonna help you because the onKilled event happens after your sprite is killed and your deadHero method references the dead sprite. The workaround here is to have your deadHero() function load a new sprite animation at the current x/y coordinate of your dead hero. That also looks like a great solution. If the hero sprite is killed, would I really still have access to it's x-y coordinates when it died? Link to comment Share on other sites More sharing options...
spmurrayzzz Posted March 9, 2014 Share Posted March 9, 2014 That also looks like a great solution. If the hero sprite is killed, would I really still have access to it's x-y coordinates when it died? You are correct. The sprite object still exists, but is no longer alive (this is so you can do things like sprite.revive(), rather than recreate a whole new sprite object). All of the other object attributes remain for you to play with at your leisure.Hope all this helps! Link to comment Share on other sites More sharing options...
Luis Felipe Posted March 10, 2014 Author Share Posted March 10, 2014 Oh wow! That will definitely come in supper handy, thanks a lot!! Link to comment Share on other sites More sharing options...
Recommended Posts