class Obstacle{ constructor(game, x){ this.game = game; this.spriteWidth = 120; this.spriteHeight = 120; this.scaledWidth = this.spriteWidth * this.game.ratio; this.scaledHeight = this.spriteHeight * this.game.ratio; this.x = x; this.y = Math.random() * this.game.height - this.scaledHeight this.collisionX; this.collisiony; this.collisionRadius = this.scaledWidth * 0.5; this.speedY = this.game.ratio * (Math.random() < 0.5 ? -1 : 1); this.markedForDeletion; } update(){ this.x -= this.game.speed; this.y += this.speedY; this.collisionX = this.x + this.scaledWidth * 0.5; this.collisionY = this.y + this.scaledHeight * 0.5; if(this.y < 0 || this.y >= this.game.height - this.scaledHeight){ this.speedY *= -1; } if(this.isOffScreen()) { this.markedForDeletion = true; this.game.obstacles = this.game.obstacles.filter(o => !o.markedForDeletion); console.log(this.game.obstacles.length) this.game.score++; if(this.game.obstacles.length <= 0) this.game.gameOver = true; } if(this.game.checkCollision(this, this.game.player)){ this.game.gameOver = true; this.game.player.collided=true; } } draw(){ this.game.ctx.fillRect(this.x, this.y, this.scaledWidth, this.scaledHeight); this.game.ctx.beginPath(); this.game.ctx.arc(this.collisionX, this.collisionY, this.collisionRadius, 0, Math.PI * 2) this.game.ctx.stroke(); } resize(){ this.scaledWidth = this.spriteWidth * this.game.ratio; this.scaledHeight = this.spriteHeight * this.game.ratio; } isOffScreen(){ return this.x < 0 - this.scaledWidth; } }