User prompt
Please fix the bug: 'TypeError: Cannot read properties of undefined (reading 'easeInOutQuad')' in or related to this line: 'tween.to(graphic, {' Line Number: 391
User prompt
Please fix the bug: 'TypeError: Cannot read properties of undefined (reading 'easeOutQuad')' in or related to this line: 'tween.to(graphic, {' Line Number: 264 ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
make best
User prompt
delete al code
User prompt
boss cant defeat. find and fix
User prompt
fix
User prompt
eneny can destroy
User prompt
player can destroy boss
User prompt
make
User prompt
delete all code
Code edit (1 edits merged)
Please save this source code
User prompt
fix game were bullet
Code edit (1 edits merged)
Please save this source code
User prompt
Sky Duel: Airship Showdown
Initial prompt
vertical shooter player vs airship big bos
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ var Boss = Container.expand(function () { var self = Container.call(this); // Boss graphics var bossGraphics = self.attachAsset('boss', { anchorX: 0.5, anchorY: 0.5 }); // Boss properties self.speed = 2; self.health = 50; self.points = 500; self.lastX = 0; self.moveDirection = 1; self.movePhase = 0; self.active = false; self.turrets = []; self.attackPhase = 0; self.attackTimer = 0; // Add turrets for (var i = 0; i < 4; i++) { var turret = self.addChild(LK.getAsset('bossPart', { anchorX: 0.5, anchorY: 0.5, x: i < 2 ? -100 : 100, y: i % 2 === 0 ? -50 : 50 })); turret.health = 10; self.turrets.push(turret); } // Activate boss self.activate = function () { self.active = true; LK.getSound('bossAlert').play({ volume: 0.7 }); // Entrance animation self.y = -150; tween.to(self, { y: 400 }, 2000, tween.easing.easeOutQuad); }; // Damage the boss self.damage = function (amount, target) { if (!self.active) { return false; } if (target) { // Hit a turret target.health -= amount; if (target.health <= 0) { // Create explosion var explosion = new Explosion(); explosion.x = self.x + target.x; explosion.y = self.y + target.y; game.addChild(explosion); // Remove turret from array and destroy it var index = self.turrets.indexOf(target); if (index !== -1) { self.turrets.splice(index, 1); } target.destroy(); // Add score LK.setScore(LK.getScore() + 50); } else { // Flash turret when hit LK.effects.flashObject(target, 0xffffff, 300); } return false; } // Hit the main boss body self.health -= amount; if (self.health <= 0) { // Create explosion var finalExplosion = new Explosion(); finalExplosion.x = self.x; finalExplosion.y = self.y; game.addChild(finalExplosion); // Add score LK.setScore(LK.getScore() + self.points); // You win! LK.setTimeout(function () { LK.showYouWin(); }, 1000); // Remove boss self.destroy(); return true; } // Flash boss when hit LK.effects.flashObject(self, 0xffffff, 300); return false; }; // Fire bullets from turrets self.fire = function () { if (!self.active || self.turrets.length === 0) { return; } // Fire from each turret for (var i = 0; i < self.turrets.length; i++) { var turret = self.turrets[i]; var bullet = new EnemyBullet(); bullet.x = self.x + turret.x; bullet.y = self.y + turret.y + 40; game.addChild(bullet); enemyBullets.push(bullet); } LK.getSound('enemyShoot').play({ volume: 0.5 }); }; // Update the boss self.update = function () { if (!self.active) { return; } self.lastX = self.x; // Move horizontally in a sine wave pattern self.movePhase += 0.02; self.x = 2048 / 2 + Math.sin(self.movePhase) * 500; // Attack patterns self.attackTimer++; if (self.attackTimer >= 60) { self.attackTimer = 0; // Different attack patterns based on phase if (self.attackPhase === 0) { self.fire(); } else if (self.attackPhase === 1) { // Rapid fire self.fire(); LK.setTimeout(function () { self.fire(); }, 200); LK.setTimeout(function () { self.fire(); }, 400); } // Change attack phase based on health self.attackPhase = self.health < 25 ? 1 : 0; } }; return self; }); // Set game background var Enemy = Container.expand(function () { var self = Container.call(this); // Enemy graphics var enemyGraphics = self.attachAsset('enemy', { anchorX: 0.5, anchorY: 0.5 }); // Enemy properties self.speed = 3; self.fireRate = 240; // Doubled the fire rate value to make enemies shoot less frequently self.health = 1; self.points = 10; self.lastY = 0; self.lastX = 0; self.moveDirection = 1; self.lastWasIntersecting = false; // Initialize with random horizontal movement self.horizontalSpeed = 1 + Math.random() * 2; if (Math.random() > 0.5) { self.horizontalSpeed *= -1; } // Damage the enemy self.damage = function (amount) { self.health -= amount; if (self.health <= 0) { // Create explosion var explosion = new Explosion(); explosion.x = self.x; explosion.y = self.y; game.addChild(explosion); // Add score LK.setScore(LK.getScore() + self.points); // Remove enemy self.destroy(); return true; } // Flash enemy when hit LK.effects.flashObject(self, 0xffffff, 300); return false; }; // Fire a bullet self.fire = function () { if (Math.random() < 0.3 && player && player.health > 0) { // Reduced chance from 0.7 to 0.3 var bullet = new EnemyBullet(); bullet.x = self.x; bullet.y = self.y + 40; game.addChild(bullet); enemyBullets.push(bullet); // Play sound with proper volume LK.getSound('enemyShoot').play({ volume: 0.4 }); } }; // Update the enemy self.update = function () { self.lastX = self.x; self.lastY = self.y; // Move down self.y += self.speed; // Move side to side self.x += self.horizontalSpeed * self.moveDirection; // Bounce at edges if (self.x < 100 || self.x > 2048 - 100) { self.moveDirection *= -1; } // Occasionally fire if (LK.ticks % self.fireRate === 0) { self.fire(); } }; return self; }); var EnemyBullet = Container.expand(function () { var self = Container.call(this); // Bullet graphics self.attachAsset('enemyBullet', { anchorX: 0.5, anchorY: 0.5 }); // Bullet properties self.speed = 5; // Reduced from 8 to 5 self.lastY = 0; self.lastWasIntersecting = false; // Update the bullet position self.update = function () { self.lastY = self.y; self.y += self.speed; }; return self; }); var Explosion = Container.expand(function () { var self = Container.call(this); // Explosion graphics var graphic = self.attachAsset('explosion', { anchorX: 0.5, anchorY: 0.5, alpha: 0.8 }); // Play explosion sound LK.getSound('explosion').play({ volume: 0.6 }); // Simple animation LK.setTimeout(function () { self.destroy(); }, 500); return self; }); var PlayerBullet = Container.expand(function () { var self = Container.call(this); // Bullet graphics self.attachAsset('playerBullet', { anchorX: 0.5, anchorY: 0.5 }); // Bullet properties self.speed = 15; self.damage = 1; self.lastY = 0; self.lastWasIntersecting = false; // Update the bullet position self.update = function () { self.lastY = self.y; self.y -= self.speed; }; return self; }); var PlayerShip = Container.expand(function () { var self = Container.call(this); // Ship graphics var shipGraphics = self.attachAsset('playerShip', { anchorX: 0.5, anchorY: 0.5 }); // Ship properties self.speed = 15; self.health = 3; self.lastX = 0; self.lastY = 0; self.fireRate = 15; self.lastFired = 0; self.invulnerable = false; // Make ship fire a bullet self.fire = function () { if (LK.ticks - self.lastFired >= self.fireRate) { var bullet = new PlayerBullet(); bullet.x = self.x; bullet.y = self.y - 50; game.addChild(bullet); bullets.push(bullet); // Play sound with proper volume LK.getSound('playerShoot').play({ volume: 0.5 }); self.lastFired = LK.ticks; } }; // Damage the ship self.damage = function () { if (self.invulnerable) { return; } // Game over on first hit LK.effects.flashScreen(0xff0000, 1000); LK.showGameOver(); return; }; // Update method self.update = function () { self.lastX = self.x; self.lastY = self.y; // Auto fire bullets every 1 second (60 frames) if (LK.ticks % 60 === 0) { self.fire(); } }; return self; }); var PowerUp = Container.expand(function () { var self = Container.call(this); // PowerUp graphics var graphic = self.attachAsset('shield', { anchorX: 0.5, anchorY: 0.5 }); // PowerUp properties self.speed = 2; self.lastY = 0; self.lastWasIntersecting = false; // Apply the powerup effect self.apply = function () { LK.getSound('powerup').play({ volume: 0.5 }); }; // Update the powerup self.update = function () { self.lastY = self.y; self.y += self.speed; }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 }); /**** * Game Code ****/ // Set game background var background = game.addChild(LK.getAsset('background', { anchorX: 0, anchorY: 0, x: 0, y: 0, width: 2048, height: 2732 })); // Initialize game variables var player; var bullets = []; var enemies = []; var enemyBullets = []; var score = 0; // Create score text var scoreTxt = new Text2('Score: 0', { size: 60, fill: 0xFFFFFF }); scoreTxt.anchor.set(0, 0); LK.gui.topLeft.addChild(scoreTxt); scoreTxt.x = 120; // Keep away from top left 100x100 area // Initialize player player = new PlayerShip(); player.x = 2048 / 2; player.y = 2732 - 200; game.addChild(player); // Create a new wave of enemies function createWave() { // Create a new wave of enemies var count = 5; // Reduced from 10 to 5 enemies for (var i = 0; i < count; i++) { var enemy = new Enemy(); enemy.x = 200 + Math.random() * (2048 - 400); enemy.y = -100 - Math.random() * 500; enemy.health = 1; enemy.points = 10; game.addChild(enemy); enemies.push(enemy); } } // Initial wave createWave(); // Start background music LK.playMusic('123Hero'); // Event handlers for player controls var touchActive = false; var touchX = 0; // Mouse/touch down game.down = function (x, y, obj) { touchActive = true; touchX = x; }; // Mouse/touch move game.move = function (x, y, obj) { if (touchActive && player && player.health > 0) { // Move player var deltaX = x - touchX; player.x += deltaX; // Keep player within screen bounds player.x = Math.max(100, Math.min(2048 - 100, player.x)); touchX = x; } }; // Mouse/touch up game.up = function (x, y, obj) { touchActive = false; }; // Main game update loop game.update = function () { // Update player if (player) { player.update(); } // Update player bullets for (var i = bullets.length - 1; i >= 0; i--) { var bullet = bullets[i]; bullet.update(); // Check if bullet is off screen if (bullet.y < -50) { bullet.destroy(); bullets.splice(i, 1); continue; } // Check collision with enemies for (var j = enemies.length - 1; j >= 0; j--) { var enemy = enemies[j]; if (!bullet.lastWasIntersecting && bullet.intersects(enemy)) { bullet.lastWasIntersecting = true; // Damage enemy if (enemy.damage(bullet.damage)) { enemies.splice(j, 1); // Create new enemies when all are defeated if (enemies.length === 0) { createWave(); } } // Remove bullet bullet.destroy(); bullets.splice(i, 1); break; } } } // Update enemy bullets for (var i = enemyBullets.length - 1; i >= 0; i--) { var enemyBullet = enemyBullets[i]; enemyBullet.update(); // Check if bullet is off screen if (enemyBullet.y > 2732 + 50) { enemyBullet.destroy(); enemyBullets.splice(i, 1); continue; } // Check collision with player if (player && player.health > 0 && !enemyBullet.lastWasIntersecting && enemyBullet.intersects(player)) { enemyBullet.lastWasIntersecting = true; // Damage player player.damage(); // Remove bullet enemyBullet.destroy(); enemyBullets.splice(i, 1); } } // Update enemies for (var i = enemies.length - 1; i >= 0; i--) { var enemy = enemies[i]; enemy.update(); // Check if enemy is off screen if (enemy.y > 2732 + 100) { enemy.destroy(); enemies.splice(i, 1); // Create new enemies when all are gone if (enemies.length === 0) { createWave(); } continue; } // Check collision with player if (player && player.health > 0 && !enemy.lastWasIntersecting && enemy.intersects(player)) { enemy.lastWasIntersecting = true; // Damage player player.damage(); // Damage enemy if (enemy.damage(1)) { enemies.splice(i, 1); // Create new enemies when all are gone if (enemies.length === 0) { createWave(); } } } } // Update score text scoreTxt.setText('Score: ' + LK.getScore()); };
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
var Boss = Container.expand(function () {
var self = Container.call(this);
// Boss graphics
var bossGraphics = self.attachAsset('boss', {
anchorX: 0.5,
anchorY: 0.5
});
// Boss properties
self.speed = 2;
self.health = 50;
self.points = 500;
self.lastX = 0;
self.moveDirection = 1;
self.movePhase = 0;
self.active = false;
self.turrets = [];
self.attackPhase = 0;
self.attackTimer = 0;
// Add turrets
for (var i = 0; i < 4; i++) {
var turret = self.addChild(LK.getAsset('bossPart', {
anchorX: 0.5,
anchorY: 0.5,
x: i < 2 ? -100 : 100,
y: i % 2 === 0 ? -50 : 50
}));
turret.health = 10;
self.turrets.push(turret);
}
// Activate boss
self.activate = function () {
self.active = true;
LK.getSound('bossAlert').play({
volume: 0.7
});
// Entrance animation
self.y = -150;
tween.to(self, {
y: 400
}, 2000, tween.easing.easeOutQuad);
};
// Damage the boss
self.damage = function (amount, target) {
if (!self.active) {
return false;
}
if (target) {
// Hit a turret
target.health -= amount;
if (target.health <= 0) {
// Create explosion
var explosion = new Explosion();
explosion.x = self.x + target.x;
explosion.y = self.y + target.y;
game.addChild(explosion);
// Remove turret from array and destroy it
var index = self.turrets.indexOf(target);
if (index !== -1) {
self.turrets.splice(index, 1);
}
target.destroy();
// Add score
LK.setScore(LK.getScore() + 50);
} else {
// Flash turret when hit
LK.effects.flashObject(target, 0xffffff, 300);
}
return false;
}
// Hit the main boss body
self.health -= amount;
if (self.health <= 0) {
// Create explosion
var finalExplosion = new Explosion();
finalExplosion.x = self.x;
finalExplosion.y = self.y;
game.addChild(finalExplosion);
// Add score
LK.setScore(LK.getScore() + self.points);
// You win!
LK.setTimeout(function () {
LK.showYouWin();
}, 1000);
// Remove boss
self.destroy();
return true;
}
// Flash boss when hit
LK.effects.flashObject(self, 0xffffff, 300);
return false;
};
// Fire bullets from turrets
self.fire = function () {
if (!self.active || self.turrets.length === 0) {
return;
}
// Fire from each turret
for (var i = 0; i < self.turrets.length; i++) {
var turret = self.turrets[i];
var bullet = new EnemyBullet();
bullet.x = self.x + turret.x;
bullet.y = self.y + turret.y + 40;
game.addChild(bullet);
enemyBullets.push(bullet);
}
LK.getSound('enemyShoot').play({
volume: 0.5
});
};
// Update the boss
self.update = function () {
if (!self.active) {
return;
}
self.lastX = self.x;
// Move horizontally in a sine wave pattern
self.movePhase += 0.02;
self.x = 2048 / 2 + Math.sin(self.movePhase) * 500;
// Attack patterns
self.attackTimer++;
if (self.attackTimer >= 60) {
self.attackTimer = 0;
// Different attack patterns based on phase
if (self.attackPhase === 0) {
self.fire();
} else if (self.attackPhase === 1) {
// Rapid fire
self.fire();
LK.setTimeout(function () {
self.fire();
}, 200);
LK.setTimeout(function () {
self.fire();
}, 400);
}
// Change attack phase based on health
self.attackPhase = self.health < 25 ? 1 : 0;
}
};
return self;
});
// Set game background
var Enemy = Container.expand(function () {
var self = Container.call(this);
// Enemy graphics
var enemyGraphics = self.attachAsset('enemy', {
anchorX: 0.5,
anchorY: 0.5
});
// Enemy properties
self.speed = 3;
self.fireRate = 240; // Doubled the fire rate value to make enemies shoot less frequently
self.health = 1;
self.points = 10;
self.lastY = 0;
self.lastX = 0;
self.moveDirection = 1;
self.lastWasIntersecting = false;
// Initialize with random horizontal movement
self.horizontalSpeed = 1 + Math.random() * 2;
if (Math.random() > 0.5) {
self.horizontalSpeed *= -1;
}
// Damage the enemy
self.damage = function (amount) {
self.health -= amount;
if (self.health <= 0) {
// Create explosion
var explosion = new Explosion();
explosion.x = self.x;
explosion.y = self.y;
game.addChild(explosion);
// Add score
LK.setScore(LK.getScore() + self.points);
// Remove enemy
self.destroy();
return true;
}
// Flash enemy when hit
LK.effects.flashObject(self, 0xffffff, 300);
return false;
};
// Fire a bullet
self.fire = function () {
if (Math.random() < 0.3 && player && player.health > 0) {
// Reduced chance from 0.7 to 0.3
var bullet = new EnemyBullet();
bullet.x = self.x;
bullet.y = self.y + 40;
game.addChild(bullet);
enemyBullets.push(bullet);
// Play sound with proper volume
LK.getSound('enemyShoot').play({
volume: 0.4
});
}
};
// Update the enemy
self.update = function () {
self.lastX = self.x;
self.lastY = self.y;
// Move down
self.y += self.speed;
// Move side to side
self.x += self.horizontalSpeed * self.moveDirection;
// Bounce at edges
if (self.x < 100 || self.x > 2048 - 100) {
self.moveDirection *= -1;
}
// Occasionally fire
if (LK.ticks % self.fireRate === 0) {
self.fire();
}
};
return self;
});
var EnemyBullet = Container.expand(function () {
var self = Container.call(this);
// Bullet graphics
self.attachAsset('enemyBullet', {
anchorX: 0.5,
anchorY: 0.5
});
// Bullet properties
self.speed = 5; // Reduced from 8 to 5
self.lastY = 0;
self.lastWasIntersecting = false;
// Update the bullet position
self.update = function () {
self.lastY = self.y;
self.y += self.speed;
};
return self;
});
var Explosion = Container.expand(function () {
var self = Container.call(this);
// Explosion graphics
var graphic = self.attachAsset('explosion', {
anchorX: 0.5,
anchorY: 0.5,
alpha: 0.8
});
// Play explosion sound
LK.getSound('explosion').play({
volume: 0.6
});
// Simple animation
LK.setTimeout(function () {
self.destroy();
}, 500);
return self;
});
var PlayerBullet = Container.expand(function () {
var self = Container.call(this);
// Bullet graphics
self.attachAsset('playerBullet', {
anchorX: 0.5,
anchorY: 0.5
});
// Bullet properties
self.speed = 15;
self.damage = 1;
self.lastY = 0;
self.lastWasIntersecting = false;
// Update the bullet position
self.update = function () {
self.lastY = self.y;
self.y -= self.speed;
};
return self;
});
var PlayerShip = Container.expand(function () {
var self = Container.call(this);
// Ship graphics
var shipGraphics = self.attachAsset('playerShip', {
anchorX: 0.5,
anchorY: 0.5
});
// Ship properties
self.speed = 15;
self.health = 3;
self.lastX = 0;
self.lastY = 0;
self.fireRate = 15;
self.lastFired = 0;
self.invulnerable = false;
// Make ship fire a bullet
self.fire = function () {
if (LK.ticks - self.lastFired >= self.fireRate) {
var bullet = new PlayerBullet();
bullet.x = self.x;
bullet.y = self.y - 50;
game.addChild(bullet);
bullets.push(bullet);
// Play sound with proper volume
LK.getSound('playerShoot').play({
volume: 0.5
});
self.lastFired = LK.ticks;
}
};
// Damage the ship
self.damage = function () {
if (self.invulnerable) {
return;
}
// Game over on first hit
LK.effects.flashScreen(0xff0000, 1000);
LK.showGameOver();
return;
};
// Update method
self.update = function () {
self.lastX = self.x;
self.lastY = self.y;
// Auto fire bullets every 1 second (60 frames)
if (LK.ticks % 60 === 0) {
self.fire();
}
};
return self;
});
var PowerUp = Container.expand(function () {
var self = Container.call(this);
// PowerUp graphics
var graphic = self.attachAsset('shield', {
anchorX: 0.5,
anchorY: 0.5
});
// PowerUp properties
self.speed = 2;
self.lastY = 0;
self.lastWasIntersecting = false;
// Apply the powerup effect
self.apply = function () {
LK.getSound('powerup').play({
volume: 0.5
});
};
// Update the powerup
self.update = function () {
self.lastY = self.y;
self.y += self.speed;
};
return self;
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000000
});
/****
* Game Code
****/
// Set game background
var background = game.addChild(LK.getAsset('background', {
anchorX: 0,
anchorY: 0,
x: 0,
y: 0,
width: 2048,
height: 2732
}));
// Initialize game variables
var player;
var bullets = [];
var enemies = [];
var enemyBullets = [];
var score = 0;
// Create score text
var scoreTxt = new Text2('Score: 0', {
size: 60,
fill: 0xFFFFFF
});
scoreTxt.anchor.set(0, 0);
LK.gui.topLeft.addChild(scoreTxt);
scoreTxt.x = 120; // Keep away from top left 100x100 area
// Initialize player
player = new PlayerShip();
player.x = 2048 / 2;
player.y = 2732 - 200;
game.addChild(player);
// Create a new wave of enemies
function createWave() {
// Create a new wave of enemies
var count = 5; // Reduced from 10 to 5 enemies
for (var i = 0; i < count; i++) {
var enemy = new Enemy();
enemy.x = 200 + Math.random() * (2048 - 400);
enemy.y = -100 - Math.random() * 500;
enemy.health = 1;
enemy.points = 10;
game.addChild(enemy);
enemies.push(enemy);
}
}
// Initial wave
createWave();
// Start background music
LK.playMusic('123Hero');
// Event handlers for player controls
var touchActive = false;
var touchX = 0;
// Mouse/touch down
game.down = function (x, y, obj) {
touchActive = true;
touchX = x;
};
// Mouse/touch move
game.move = function (x, y, obj) {
if (touchActive && player && player.health > 0) {
// Move player
var deltaX = x - touchX;
player.x += deltaX;
// Keep player within screen bounds
player.x = Math.max(100, Math.min(2048 - 100, player.x));
touchX = x;
}
};
// Mouse/touch up
game.up = function (x, y, obj) {
touchActive = false;
};
// Main game update loop
game.update = function () {
// Update player
if (player) {
player.update();
}
// Update player bullets
for (var i = bullets.length - 1; i >= 0; i--) {
var bullet = bullets[i];
bullet.update();
// Check if bullet is off screen
if (bullet.y < -50) {
bullet.destroy();
bullets.splice(i, 1);
continue;
}
// Check collision with enemies
for (var j = enemies.length - 1; j >= 0; j--) {
var enemy = enemies[j];
if (!bullet.lastWasIntersecting && bullet.intersects(enemy)) {
bullet.lastWasIntersecting = true;
// Damage enemy
if (enemy.damage(bullet.damage)) {
enemies.splice(j, 1);
// Create new enemies when all are defeated
if (enemies.length === 0) {
createWave();
}
}
// Remove bullet
bullet.destroy();
bullets.splice(i, 1);
break;
}
}
}
// Update enemy bullets
for (var i = enemyBullets.length - 1; i >= 0; i--) {
var enemyBullet = enemyBullets[i];
enemyBullet.update();
// Check if bullet is off screen
if (enemyBullet.y > 2732 + 50) {
enemyBullet.destroy();
enemyBullets.splice(i, 1);
continue;
}
// Check collision with player
if (player && player.health > 0 && !enemyBullet.lastWasIntersecting && enemyBullet.intersects(player)) {
enemyBullet.lastWasIntersecting = true;
// Damage player
player.damage();
// Remove bullet
enemyBullet.destroy();
enemyBullets.splice(i, 1);
}
}
// Update enemies
for (var i = enemies.length - 1; i >= 0; i--) {
var enemy = enemies[i];
enemy.update();
// Check if enemy is off screen
if (enemy.y > 2732 + 100) {
enemy.destroy();
enemies.splice(i, 1);
// Create new enemies when all are gone
if (enemies.length === 0) {
createWave();
}
continue;
}
// Check collision with player
if (player && player.health > 0 && !enemy.lastWasIntersecting && enemy.intersects(player)) {
enemy.lastWasIntersecting = true;
// Damage player
player.damage();
// Damage enemy
if (enemy.damage(1)) {
enemies.splice(i, 1);
// Create new enemies when all are gone
if (enemies.length === 0) {
createWave();
}
}
}
}
// Update score text
scoreTxt.setText('Score: ' + LK.getScore());
};
top down 32 bit image manta ray air warplane. In-Game asset. 2d. High contrast. No shadows
2d disney style image about zone of blue sky. In-Game asset. 2d. High contrast. No shadows
red laser. In-Game asset. 2d. High contrast. No shadows
top down 2d scifi pelican war air plane look a like. In-Game asset. 2d. High contrast. No shadows
vertical torpedo fall. In-Game asset. 2d. High contrast. No shadows
disney image style yellow explosion. In-Game asset. 2d. High contrast. No shadows