/**** * Classes ****/ // Bullet class var Bullet = Container.expand(function (startX, startY, direction) { var self = Container.call(this); var bulletGraphics = self.attachAsset('bullet', { anchorX: 0.5, anchorY: 0.5 }); self.x = startX; self.y = startY; self.speed = 10; self.direction = direction; self.update = function () { self.x += self.direction.x * self.speed; self.y += self.direction.y * self.speed; if (self.x < 0 || self.x > 2048 || self.y < 0 || self.y > 2732) { self.destroy(); } }; }); // Enemy class var Enemy = Container.expand(function (startX, startY) { var self = Container.call(this); var enemyGraphics = self.attachAsset('enemy', { anchorX: 0.5, anchorY: 0.5 }); self.lastIntersecting = false; self.x = startX; self.y = startY; self.speed = 2; self.update = function () { var dx = player.x - self.x; var dy = player.y - self.y; var distance = Math.sqrt(dx * dx + dy * dy); self.x += dx / distance * self.speed; self.y += dy / distance * self.speed; enemyGraphics.scaleX = self.x > 1024 ? -1 : 1; if (self.intersects(player) && !self.lastIntersecting) { // Handle player damage playerHealth -= 1; if (playerHealth >= 0) { hearts[playerHealth].destroy(); // Remove a heart when player takes damage hearts.pop(); } if (playerHealth <= 0) { LK.showGameOver(); // End the game when player health reaches zero } self.destroy(); } self.lastIntersecting = self.intersects(player); }; }); // EnemyBig class var EnemyBig = Container.expand(function (startX, startY) { var self = Container.call(this); var enemyBigGraphics = self.attachAsset('enemy', { anchorX: 0.5, anchorY: 0.5, scaleX: 2, scaleY: 2 }); self.lastIntersecting = false; self.x = startX; self.y = startY; self.speed = 0.5; self.health = 5; // Takes 5 shots to be killed self.update = function () { var dx = player.x - self.x; var dy = player.y - self.y; var distance = Math.sqrt(dx * dx + dy * dy); self.x += dx / distance * self.speed; self.y += dy / distance * self.speed; enemyBigGraphics.scaleX = self.x > 1024 ? -2 : 2; if (self.intersects(player) && !self.lastIntersecting) { // Handle player damage playerHealth -= 1; if (playerHealth >= 0) { hearts[playerHealth].destroy(); // Remove a heart when player takes damage hearts.pop(); } if (playerHealth <= 0) { LK.showGameOver(); // End the game when player health reaches zero } self.destroy(); } self.lastIntersecting = self.intersects(player); }; self.takeDamage = function () { self.health -= 1; if (self.health <= 0) { self.destroy(); for (var i = 0; i < 2; i++) { var edge = Math.floor(Math.random() * 4); var startX, startY; if (edge === 0) { startX = Math.random() * 2048; startY = -100; // Above the screen } else if (edge === 1) { startX = 2148; // Right of the screen startY = Math.random() * 2732; } else if (edge === 2) { startX = Math.random() * 2048; startY = 2832; // Below the screen } else { startX = -100; // Left of the screen startY = Math.random() * 2732; } var newEnemyBig = new EnemyBig(startX, startY); newEnemyBig.speed *= 1.1; // Increase speed by 10% game.addChild(newEnemyBig); enemies.push(newEnemyBig); } } else { // Blink effect enemyBigGraphics.alpha = 0.5; LK.setTimeout(function () { enemyBigGraphics.alpha = 1; }, 100); } }; }); // EnemyBoss class var EnemyBoss = Container.expand(function (startX, startY) { var self = Container.call(this); var enemyBossGraphics = self.attachAsset('enemyBoss', { anchorX: 0.5, anchorY: 0.5, scaleX: 1, scaleY: 1 }); self.lastIntersecting = false; self.x = startX; self.y = startY; self.speed = 0.175; self.health = 30; // Takes 30 shots to be killed self.update = function () { var dx = player.x - self.x; var dy = player.y - self.y; var distance = Math.sqrt(dx * dx + dy * dy); self.x += dx / distance * self.speed; self.y += dy / distance * self.speed; enemyBossGraphics.scaleX = self.x > 1024 ? -2 : 2; if (self.intersects(player) && !self.lastIntersecting) { // Handle player damage playerHealth -= 1; if (playerHealth >= 0) { hearts[playerHealth].destroy(); // Remove a heart when player takes damage hearts.pop(); } if (playerHealth <= 0) { LK.showGameOver(); // End the game when player health reaches zero } else { // Trigger game over when EnemyBoss hits the player LK.showGameOver(); } } self.lastIntersecting = self.intersects(player); }; self.takeDamage = function () { self.health -= 1; if (self.health <= 0) { self.destroy(); LK.showYouWin(); // Trigger game win when EnemyBoss is destroyed } else { // Blink effect enemyBossGraphics.alpha = 0.5; LK.setTimeout(function () { enemyBossGraphics.alpha = 1; }, 100); } }; }); //<Assets used in the game will automatically appear here> //<Write imports for supported plugins here> // Player class var Player = Container.expand(function () { var self = Container.call(this); var playerGraphics = self.attachAsset('player', { anchorX: 0.5, anchorY: 0.5 }); self.shootDirection = { x: 0, y: 0 }; self.projectiles = 1; self.update = function () { // Player shooting logic if (LK.ticks % 75 === 0) { for (var i = 0; i < self.projectiles; i++) { LK.setTimeout(function () { var bullet = new Bullet(self.x, self.y, self.shootDirection); game.addChild(bullet); bullets.push(bullet); }, i * 100); } } }; }); // PowerUp class var PowerUp = Container.expand(function (startX, startY) { var self = Container.call(this); var powerUpGraphics = self.attachAsset('powerUp', { anchorX: 0.5, anchorY: 0.5, scaleX: 2, scaleY: 2 }); self.x = startX; self.y = startY; self.update = function () { // Move power-up towards the player var dx = player.x - self.x; var dy = player.y - self.y; var distance = Math.sqrt(dx * dx + dy * dy); self.x += dx / distance * 0.25; // Adjust speed as needed self.y += dy / distance * 0.25; // Adjust speed as needed // Check for collision with bullets for (var i = bullets.length - 1; i >= 0; i--) { if (bullets[i].intersects(self)) { // Destroy both bullet and powerUp bullets[i].destroy(); bullets.splice(i, 1); self.destroy(); // Increase player's fire rate by 100% player.shootInterval *= 0.5; // Increase the number of projectiles fired by the player player.projectiles += 1; // Destroy power-up object when picked powerUps.splice(powerUps.indexOf(self), 1); break; } } }; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 //Init game with black background }); /**** * Game Code ****/ // Add background to the game var background = LK.getAsset('background', { anchorX: 0.5, anchorY: 0.5 }); background.x = 1024; background.y = 1366; game.addChild(background); // Initialize player var player = game.addChild(new Player()); player.x = 1024; player.y = 1366; // Initialize bullets, enemies and powerUps arrays var bullets = []; var enemies = []; var powerUps = []; // Player health var playerHealth = 5; // Display player's health as hearts var hearts = []; for (var i = 0; i < playerHealth; i++) { var heart = LK.getAsset('heart', { anchorX: 0.5, anchorY: 0.5 }); heart.x = -300 + i * 150; // Position hearts with some spacing heart.y = 200; // Position hearts at the top of the screen LK.gui.top.addChild(heart); hearts.push(heart); } // Initialize score var score = 0; // Create score text var scoreText = new Text2('Score: 0', { size: 50, fill: 0xFFFFFF }); scoreText.anchor.set(0.5, 0); LK.gui.top.addChild(scoreText); // Game update function game.update = function () { // Update player direction based on pointer game.move = function (x, y, obj) { var dx = x - player.x; var dy = y - player.y; var distance = Math.sqrt(dx * dx + dy * dy); player.shootDirection = { x: dx / distance, y: dy / distance }; }; // Spawn enemies at random edges if (LK.ticks % 120 === 0) { var edge = Math.floor(Math.random() * 4); var startX, startY; if (edge === 0) { // Top startX = Math.random() * 2048; startY = 0; } else if (edge === 1) { // Right startX = 2048; startY = Math.random() * 2732; } else if (edge === 2) { // Bottom startX = Math.random() * 2048; startY = 2732; } else { // Left startX = 0; startY = Math.random() * 2732; } var enemy = new Enemy(startX, startY); game.addChild(enemy); enemies.push(enemy); } // Spawn powerUps at random positions every 5 seconds if (LK.ticks % 300 === 0) { var startX = Math.random() * 2048; var startY = Math.random() * 2732; var powerUp = new PowerUp(startX, startY); game.addChild(powerUp); powerUps.push(powerUp); } // Spawn EnemyBig after 7 seconds if there are less than 20 if (LK.ticks === 420 && enemies.filter(function (e) { return e instanceof EnemyBig; }).length < 20) { // 7 seconds * 60 FPS = 420 ticks var edge = Math.floor(Math.random() * 4); var startX, startY; if (edge === 0) { // Top startX = Math.random() * 2048; startY = 0; } else if (edge === 1) { // Right startX = 2048; startY = Math.random() * 2732; } else if (edge === 2) { // Bottom startX = Math.random() * 2048; startY = 2732; } else { // Left startX = 0; startY = Math.random() * 2732; } var enemyBig = new EnemyBig(startX, startY); game.addChild(enemyBig); enemies.push(enemyBig); } // Spawn EnemyBoss after 10 seconds if (LK.ticks === 600) { // 10 seconds * 60 FPS = 600 ticks var edge = Math.floor(Math.random() * 4); var startX, startY; if (edge === 0) { // Top startX = Math.random() * 2048; startY = 0; } else if (edge === 1) { // Right startX = 2048; startY = Math.random() * 2732; } else if (edge === 2) { // Bottom startX = Math.random() * 2048; startY = 2732; } else { // Left startX = 0; startY = Math.random() * 2732; } var enemyBoss = new EnemyBoss(startX, startY); game.addChild(enemyBoss); enemies.push(enemyBoss); } // Update bullets for (var i = bullets.length - 1; i >= 0; i--) { bullets[i].update(); // Check for collision with enemies for (var j = enemies.length - 1; j >= 0; j--) { if (bullets[i].intersects(enemies[j])) { // Destroy bullet bullets[i].destroy(); bullets.splice(i, 1); // Check if enemy is EnemyBig or EnemyBoss if (enemies[j] instanceof EnemyBig || enemies[j] instanceof EnemyBoss) { enemies[j].takeDamage(); if (enemies[j].health <= 0) { enemies[j].destroy(); enemies.splice(j, 1); // Add 1 to score every time a bullet destroys an enemy score += 1; scoreText.setText('Score: ' + score); // Spawn two new EnemyBig at random edges if total is less than 20 if (enemies[j] instanceof EnemyBig) { var currentEnemyBigCount = enemies.filter(function (e) { return e instanceof EnemyBig; }).length; for (var k = 0; k < 2 && currentEnemyBigCount < 20; k++, currentEnemyBigCount++) { var edge = Math.floor(Math.random() * 4); var startX, startY; if (edge === 0) { startX = Math.random() * 2048; startY = 0; } else if (edge === 1) { startX = 2048; startY = Math.random() * 2732; } else if (edge === 2) { startX = Math.random() * 2048; startY = 2732; } else { startX = 0; startY = Math.random() * 2732; } var newEnemyBig = new EnemyBig(startX, startY); game.addChild(newEnemyBig); enemies.push(newEnemyBig); } } } } else { // Destroy enemy enemies[j].destroy(); enemies.splice(j, 1); // Add 1 to score every time a bullet destroys an enemy score += 1; scoreText.setText('Score: ' + score); } break; } } if (bullets[i] && bullets[i].destroyed) { bullets.splice(i, 1); } } // Update enemies for (var j = enemies.length - 1; j >= 0; j--) { enemies[j].update(); if (enemies[j].destroyed) { enemies.splice(j, 1); } } // Update powerUps for (var i = powerUps.length - 1; i >= 0; i--) { powerUps[i].update(); if (powerUps[i] && powerUps[i].destroyed) { powerUps.splice(i, 1); } } };
/****
* Classes
****/
// Bullet class
var Bullet = Container.expand(function (startX, startY, direction) {
var self = Container.call(this);
var bulletGraphics = self.attachAsset('bullet', {
anchorX: 0.5,
anchorY: 0.5
});
self.x = startX;
self.y = startY;
self.speed = 10;
self.direction = direction;
self.update = function () {
self.x += self.direction.x * self.speed;
self.y += self.direction.y * self.speed;
if (self.x < 0 || self.x > 2048 || self.y < 0 || self.y > 2732) {
self.destroy();
}
};
});
// Enemy class
var Enemy = Container.expand(function (startX, startY) {
var self = Container.call(this);
var enemyGraphics = self.attachAsset('enemy', {
anchorX: 0.5,
anchorY: 0.5
});
self.lastIntersecting = false;
self.x = startX;
self.y = startY;
self.speed = 2;
self.update = function () {
var dx = player.x - self.x;
var dy = player.y - self.y;
var distance = Math.sqrt(dx * dx + dy * dy);
self.x += dx / distance * self.speed;
self.y += dy / distance * self.speed;
enemyGraphics.scaleX = self.x > 1024 ? -1 : 1;
if (self.intersects(player) && !self.lastIntersecting) {
// Handle player damage
playerHealth -= 1;
if (playerHealth >= 0) {
hearts[playerHealth].destroy(); // Remove a heart when player takes damage
hearts.pop();
}
if (playerHealth <= 0) {
LK.showGameOver(); // End the game when player health reaches zero
}
self.destroy();
}
self.lastIntersecting = self.intersects(player);
};
});
// EnemyBig class
var EnemyBig = Container.expand(function (startX, startY) {
var self = Container.call(this);
var enemyBigGraphics = self.attachAsset('enemy', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 2,
scaleY: 2
});
self.lastIntersecting = false;
self.x = startX;
self.y = startY;
self.speed = 0.5;
self.health = 5; // Takes 5 shots to be killed
self.update = function () {
var dx = player.x - self.x;
var dy = player.y - self.y;
var distance = Math.sqrt(dx * dx + dy * dy);
self.x += dx / distance * self.speed;
self.y += dy / distance * self.speed;
enemyBigGraphics.scaleX = self.x > 1024 ? -2 : 2;
if (self.intersects(player) && !self.lastIntersecting) {
// Handle player damage
playerHealth -= 1;
if (playerHealth >= 0) {
hearts[playerHealth].destroy(); // Remove a heart when player takes damage
hearts.pop();
}
if (playerHealth <= 0) {
LK.showGameOver(); // End the game when player health reaches zero
}
self.destroy();
}
self.lastIntersecting = self.intersects(player);
};
self.takeDamage = function () {
self.health -= 1;
if (self.health <= 0) {
self.destroy();
for (var i = 0; i < 2; i++) {
var edge = Math.floor(Math.random() * 4);
var startX, startY;
if (edge === 0) {
startX = Math.random() * 2048;
startY = -100; // Above the screen
} else if (edge === 1) {
startX = 2148; // Right of the screen
startY = Math.random() * 2732;
} else if (edge === 2) {
startX = Math.random() * 2048;
startY = 2832; // Below the screen
} else {
startX = -100; // Left of the screen
startY = Math.random() * 2732;
}
var newEnemyBig = new EnemyBig(startX, startY);
newEnemyBig.speed *= 1.1; // Increase speed by 10%
game.addChild(newEnemyBig);
enemies.push(newEnemyBig);
}
} else {
// Blink effect
enemyBigGraphics.alpha = 0.5;
LK.setTimeout(function () {
enemyBigGraphics.alpha = 1;
}, 100);
}
};
});
// EnemyBoss class
var EnemyBoss = Container.expand(function (startX, startY) {
var self = Container.call(this);
var enemyBossGraphics = self.attachAsset('enemyBoss', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 1,
scaleY: 1
});
self.lastIntersecting = false;
self.x = startX;
self.y = startY;
self.speed = 0.175;
self.health = 30; // Takes 30 shots to be killed
self.update = function () {
var dx = player.x - self.x;
var dy = player.y - self.y;
var distance = Math.sqrt(dx * dx + dy * dy);
self.x += dx / distance * self.speed;
self.y += dy / distance * self.speed;
enemyBossGraphics.scaleX = self.x > 1024 ? -2 : 2;
if (self.intersects(player) && !self.lastIntersecting) {
// Handle player damage
playerHealth -= 1;
if (playerHealth >= 0) {
hearts[playerHealth].destroy(); // Remove a heart when player takes damage
hearts.pop();
}
if (playerHealth <= 0) {
LK.showGameOver(); // End the game when player health reaches zero
} else {
// Trigger game over when EnemyBoss hits the player
LK.showGameOver();
}
}
self.lastIntersecting = self.intersects(player);
};
self.takeDamage = function () {
self.health -= 1;
if (self.health <= 0) {
self.destroy();
LK.showYouWin(); // Trigger game win when EnemyBoss is destroyed
} else {
// Blink effect
enemyBossGraphics.alpha = 0.5;
LK.setTimeout(function () {
enemyBossGraphics.alpha = 1;
}, 100);
}
};
});
//<Assets used in the game will automatically appear here>
//<Write imports for supported plugins here>
// Player class
var Player = Container.expand(function () {
var self = Container.call(this);
var playerGraphics = self.attachAsset('player', {
anchorX: 0.5,
anchorY: 0.5
});
self.shootDirection = {
x: 0,
y: 0
};
self.projectiles = 1;
self.update = function () {
// Player shooting logic
if (LK.ticks % 75 === 0) {
for (var i = 0; i < self.projectiles; i++) {
LK.setTimeout(function () {
var bullet = new Bullet(self.x, self.y, self.shootDirection);
game.addChild(bullet);
bullets.push(bullet);
}, i * 100);
}
}
};
});
// PowerUp class
var PowerUp = Container.expand(function (startX, startY) {
var self = Container.call(this);
var powerUpGraphics = self.attachAsset('powerUp', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 2,
scaleY: 2
});
self.x = startX;
self.y = startY;
self.update = function () {
// Move power-up towards the player
var dx = player.x - self.x;
var dy = player.y - self.y;
var distance = Math.sqrt(dx * dx + dy * dy);
self.x += dx / distance * 0.25; // Adjust speed as needed
self.y += dy / distance * 0.25; // Adjust speed as needed
// Check for collision with bullets
for (var i = bullets.length - 1; i >= 0; i--) {
if (bullets[i].intersects(self)) {
// Destroy both bullet and powerUp
bullets[i].destroy();
bullets.splice(i, 1);
self.destroy();
// Increase player's fire rate by 100%
player.shootInterval *= 0.5;
// Increase the number of projectiles fired by the player
player.projectiles += 1;
// Destroy power-up object when picked
powerUps.splice(powerUps.indexOf(self), 1);
break;
}
}
};
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000000 //Init game with black background
});
/****
* Game Code
****/
// Add background to the game
var background = LK.getAsset('background', {
anchorX: 0.5,
anchorY: 0.5
});
background.x = 1024;
background.y = 1366;
game.addChild(background);
// Initialize player
var player = game.addChild(new Player());
player.x = 1024;
player.y = 1366;
// Initialize bullets, enemies and powerUps arrays
var bullets = [];
var enemies = [];
var powerUps = [];
// Player health
var playerHealth = 5;
// Display player's health as hearts
var hearts = [];
for (var i = 0; i < playerHealth; i++) {
var heart = LK.getAsset('heart', {
anchorX: 0.5,
anchorY: 0.5
});
heart.x = -300 + i * 150; // Position hearts with some spacing
heart.y = 200; // Position hearts at the top of the screen
LK.gui.top.addChild(heart);
hearts.push(heart);
}
// Initialize score
var score = 0;
// Create score text
var scoreText = new Text2('Score: 0', {
size: 50,
fill: 0xFFFFFF
});
scoreText.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreText);
// Game update function
game.update = function () {
// Update player direction based on pointer
game.move = function (x, y, obj) {
var dx = x - player.x;
var dy = y - player.y;
var distance = Math.sqrt(dx * dx + dy * dy);
player.shootDirection = {
x: dx / distance,
y: dy / distance
};
};
// Spawn enemies at random edges
if (LK.ticks % 120 === 0) {
var edge = Math.floor(Math.random() * 4);
var startX, startY;
if (edge === 0) {
// Top
startX = Math.random() * 2048;
startY = 0;
} else if (edge === 1) {
// Right
startX = 2048;
startY = Math.random() * 2732;
} else if (edge === 2) {
// Bottom
startX = Math.random() * 2048;
startY = 2732;
} else {
// Left
startX = 0;
startY = Math.random() * 2732;
}
var enemy = new Enemy(startX, startY);
game.addChild(enemy);
enemies.push(enemy);
}
// Spawn powerUps at random positions every 5 seconds
if (LK.ticks % 300 === 0) {
var startX = Math.random() * 2048;
var startY = Math.random() * 2732;
var powerUp = new PowerUp(startX, startY);
game.addChild(powerUp);
powerUps.push(powerUp);
}
// Spawn EnemyBig after 7 seconds if there are less than 20
if (LK.ticks === 420 && enemies.filter(function (e) {
return e instanceof EnemyBig;
}).length < 20) {
// 7 seconds * 60 FPS = 420 ticks
var edge = Math.floor(Math.random() * 4);
var startX, startY;
if (edge === 0) {
// Top
startX = Math.random() * 2048;
startY = 0;
} else if (edge === 1) {
// Right
startX = 2048;
startY = Math.random() * 2732;
} else if (edge === 2) {
// Bottom
startX = Math.random() * 2048;
startY = 2732;
} else {
// Left
startX = 0;
startY = Math.random() * 2732;
}
var enemyBig = new EnemyBig(startX, startY);
game.addChild(enemyBig);
enemies.push(enemyBig);
}
// Spawn EnemyBoss after 10 seconds
if (LK.ticks === 600) {
// 10 seconds * 60 FPS = 600 ticks
var edge = Math.floor(Math.random() * 4);
var startX, startY;
if (edge === 0) {
// Top
startX = Math.random() * 2048;
startY = 0;
} else if (edge === 1) {
// Right
startX = 2048;
startY = Math.random() * 2732;
} else if (edge === 2) {
// Bottom
startX = Math.random() * 2048;
startY = 2732;
} else {
// Left
startX = 0;
startY = Math.random() * 2732;
}
var enemyBoss = new EnemyBoss(startX, startY);
game.addChild(enemyBoss);
enemies.push(enemyBoss);
}
// Update bullets
for (var i = bullets.length - 1; i >= 0; i--) {
bullets[i].update();
// Check for collision with enemies
for (var j = enemies.length - 1; j >= 0; j--) {
if (bullets[i].intersects(enemies[j])) {
// Destroy bullet
bullets[i].destroy();
bullets.splice(i, 1);
// Check if enemy is EnemyBig or EnemyBoss
if (enemies[j] instanceof EnemyBig || enemies[j] instanceof EnemyBoss) {
enemies[j].takeDamage();
if (enemies[j].health <= 0) {
enemies[j].destroy();
enemies.splice(j, 1);
// Add 1 to score every time a bullet destroys an enemy
score += 1;
scoreText.setText('Score: ' + score);
// Spawn two new EnemyBig at random edges if total is less than 20
if (enemies[j] instanceof EnemyBig) {
var currentEnemyBigCount = enemies.filter(function (e) {
return e instanceof EnemyBig;
}).length;
for (var k = 0; k < 2 && currentEnemyBigCount < 20; k++, currentEnemyBigCount++) {
var edge = Math.floor(Math.random() * 4);
var startX, startY;
if (edge === 0) {
startX = Math.random() * 2048;
startY = 0;
} else if (edge === 1) {
startX = 2048;
startY = Math.random() * 2732;
} else if (edge === 2) {
startX = Math.random() * 2048;
startY = 2732;
} else {
startX = 0;
startY = Math.random() * 2732;
}
var newEnemyBig = new EnemyBig(startX, startY);
game.addChild(newEnemyBig);
enemies.push(newEnemyBig);
}
}
}
} else {
// Destroy enemy
enemies[j].destroy();
enemies.splice(j, 1);
// Add 1 to score every time a bullet destroys an enemy
score += 1;
scoreText.setText('Score: ' + score);
}
break;
}
}
if (bullets[i] && bullets[i].destroyed) {
bullets.splice(i, 1);
}
}
// Update enemies
for (var j = enemies.length - 1; j >= 0; j--) {
enemies[j].update();
if (enemies[j].destroyed) {
enemies.splice(j, 1);
}
}
// Update powerUps
for (var i = powerUps.length - 1; i >= 0; i--) {
powerUps[i].update();
if (powerUps[i] && powerUps[i].destroyed) {
powerUps.splice(i, 1);
}
}
};
fire with eyes and mouth. Single Game Texture. In-Game asset. 2d. High contrast. No shadows
A cartoon firefighter. Single Game Texture. In-Game asset. 2d. High contrast. No shadows
a blue hydrant round icon Single Game Texture. In-Game asset. 2d. High contrast. No shadows
Heart. Single Game Texture. In-Game asset. 2d. High contrast. No shadows