Jump to content

Dash logic not working


zencha
 Share

Recommended Posts

I'm currently adding a "dash" to my infinite runner where the main character can boost forward briefly. Should increase their velocity by X for Y time before resetting it back to 0.

 

Unfortunately it's not working properly. The dash doesn't last the full delay. I think it's being interrupted by the update logic which tells it to set velocity.x to 0 in the air.

 

 

 

Here's the code:

 update: function() {// lose condition        if (this.bird.y > 490)            this.restartGame();//collision checks        game.physics.arcade.collide(this.bird, this.pipes);        game.physics.arcade.collide(this.bird, this.startPipe);        game.physics.arcade.collide(this.bird, this.ground);//reset values while player is touching down. Return if player has not yet jumped.        if (this.bird.body.touching.down) {            this.bird.body.velocity.x = 300;            if(this.jumpCheck == 0) {                return;            }            this.score += 1;            this.labelScore.text = this.score;            this.jumpCheck = 0;            this.dashCheck = 0;            this.dashFinished = true;            game.add.tween(this.bird.scale).to({x: 1, y: 0.8}, 50).to({x: 1, y: 1}, 100).start();        }//while jumping, set player speed to 0 if not dashing.        if(this.bird.body.touching.down == false && this.dashFinished == true){            this.bird.body.velocity.x = 0;        }    },    jump: function(){        if(this.jumpCheck == 0){            game.add.tween(this.bird.scale).to({x: 1, y: 0.6}, 100).to({x: 1, y: 1.4}, 50).to({x: 1, y: 1}, 50).start();            this.bird.body.velocity.y = -550;            this.bird.body.gravity.y = 1500;            game.add.tween(this.bird).to({angle: 360}, 680).start();            this.jumpCheck = 1;            this.dashCheck = 0;        }//double jump        else if (this.jumpCheck == 1){            this.bird.body.velocity.y = -550;            this.bird.body.gravity.y = 1500;            game.add.tween(this.bird).to({angle: 360}, 680).start();            this.jumpCheck = 2;        }        else{            return;        }    },    dash: function(){        if((this.jumpCheck == 1 || this.jumpCheck ==2) && this.dashCheck == 0) {            this.dashCheck = 1;            this.bird.body.velocity.x = 1000;//commenting out game.time.events etc doesn't impact anything. What am I doing wrong here?            game.time.events.add(1000, this.dashFinish, this);        }    },    dashFinish: function(){        dashFinished = true;},
Link to comment
Share on other sites

 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...