What do I need to change for use on a mobile cell phone browser to make the player automatically run to the right and jump when the screen is tapped? I've searched for ages but can't find the answer and am trying to learn
here is the code
update(time, delta) {
moveBackgroundPlatform(this.mountainGroup, this.mountainWidth, 'mountains', 0.5);
moveBackgroundPlatform(this.plateauGroup, this.plateauWidth, 'plateau', 1.5);
moveBackgroundPlatform(this.groundGroup, this.groundWidth, 'ground', 4);
if (this.health <= 0) {
const myUrl = `${fetchScoreData.apiUrl + fetchScoreData.apiKey}/scores`;
fetchScoreData.postScores(myUrl, { user: gameState.playerName, score: gameState.score });
this.gameTheme.stop();
this.scene.stop();
this.scene.start('GameOver');
}
if (this.missileScore >= 1) {
this.health += 1;
this.missileScore -= 1;
}
this.player.anims.play('run', true);
this.birdGroup.children.iterate((child) => {
child.anims.play('fly', true);
});
this.missileGroup.children.iterate((child) => {
child.x -= 5;
});
this.timer += delta;
if (this.timer >= 5000) {
this.createMissile(415, 'missile');
this.timer = 0;
}
this.secondTimer += delta;
if (this.secondTimer >= 7000) {
this.createMissile(300, 'missile2');
this.secondTimer = 0;
}
if (Phaser.Input.Keyboard.JustDown(this.cursors.up)) {
//this.input.on('pointerdown', this.jump, this);
console.log(' up preess');
if (this.player.body.touching.down || (this.jump < this.jumpTimes && (this.jump > 0))) {
this.player.setVelocityY(-400);
this.jumpSound.play();
if ((this.player.body.touching.down)) {
this.jump = 0;
}
this.jump += 1;
}
}
if (!this.player.body.touching.down) {
this.player.anims.play('jump', true);
}
if (this.cursors.down.isDown) {
if (!this.player.body.touching.down) {
this.player.setGravityY(1300);
}
}
if (this.player.body.touching.down) {
this.player.setGravityY(800);
}
}
}
export default Game;
There are many way's to solve this, I'm no professional, but I would add a pointer event listener in the create
method of the scene:
this.input.on('pointerdown', jump, this);
and the jump
method, that holds all the jump logic:
jump(){
if (this.player.body.touching.down || (this.jump < this.jumpTimes && (this.jump > 0))) {
this.player.setVelocityY(-400);
this.jumpSound.play();
if ((this.player.body.touching.down)) {
this.jump = 0;
}
this.jump += 1;
}
}
this jump
method you could call in the update
function t prevent duplication of code.
update(time, delta) {
...
if (Phaser.Input.Keyboard.JustDown(this.cursors.up)) {
jump();
...
}
...
}