diff --git a/assets/images/level1-background.png b/assets/images/level1-background.png new file mode 100644 index 0000000..10c5219 Binary files /dev/null and b/assets/images/level1-background.png differ diff --git a/src/scenes/BootScene.js b/src/scenes/BootScene.js index 0f36caa..9c008f5 100644 --- a/src/scenes/BootScene.js +++ b/src/scenes/BootScene.js @@ -11,6 +11,9 @@ export default class BootScene extends Phaser.Scene { // Key must match the name Phaser derives from the TSX source: 'platforms' this.load.image('platforms', '../../assets/sprites/platforms.png'); + // Level 1 background image + this.load.image('level1-bg', '../../assets/images/level1-background.png'); + // Player spritesheet (128x256 per frame) this.load.spritesheet('player', '../../assets/sprites/player.png', { frameWidth: 128, diff --git a/src/scenes/Level1Scene.js b/src/scenes/Level1Scene.js index a62dce1..6edd0c0 100644 --- a/src/scenes/Level1Scene.js +++ b/src/scenes/Level1Scene.js @@ -67,6 +67,11 @@ export default class Level1Scene extends Phaser.Scene { } } + // ------------------------- + // Background image + // ------------------------- + this.add.image(0, 0, 'level1-bg').setOrigin(0, 0).setDisplaySize(30 * 128, 20 * 128).setScrollFactor(0.3); + const map = this.make.tilemap({ key: 'level1' }); // 'platforms' = name Phaser derives from the external tileset source 'platforms.tsx' @@ -183,13 +188,15 @@ export default class Level1Scene extends Phaser.Scene { } update(time, delta) { - // Store velocity BEFORE player.update() so we know if player was falling - this._prevVelocityY = this._player.body.velocity.y; - this._player.update(time, delta); this._checkButtonPress(); this._livesText.setText('Lives: ' + this._player.lives); + + // Store velocity at END of frame so next frame's _checkButtonPress sees the + // pre-landing velocity. Physics zeroes velocity.y before update() is called, + // so capturing it here (post-physics, post-input) gives the correct falling speed. + this._prevVelocityY = this._player.body.velocity.y; } /**