User prompt
tamam enemy'ler öldüklerinde efektleri parçalanma efekti olsun ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
player düz hizada ateş etsin ayrıca enemyler öldüklerinde patlama efekti olsun ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
POWERUP dönerek gelmesin
Code edit (1 edits merged)
Please save this source code
User prompt
Isometric Neon Blaster
Initial prompt
izometrik endless shooter game yap
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ var Enemy = Container.expand(function () { var self = Container.call(this); var graphics = self.attachAsset('enemy', { anchorX: 0.5, anchorY: 0.5 }); self.speedX = 0; self.speedY = 2; self.health = 1; self.update = function () { self.x += self.speedX; self.y += self.speedY; // Apply isometric movement effect self.x += self.speedY * 0.5; }; return self; }); var Player = Container.expand(function () { var self = Container.call(this); var graphics = self.attachAsset('player', { anchorX: 0.5, anchorY: 0.5 }); self.health = 3; self.maxHealth = 3; self.shootCooldown = 0; self.invulnerable = 0; self.update = function () { if (self.shootCooldown > 0) { self.shootCooldown--; } if (self.invulnerable > 0) { self.invulnerable--; graphics.alpha = self.invulnerable % 10 < 5 ? 0.5 : 1.0; } else { graphics.alpha = 1.0; } }; self.shoot = function () { if (self.shootCooldown <= 0) { var bullet = new PlayerBullet(); bullet.x = self.x; bullet.y = self.y - 40; bullets.push(bullet); game.addChild(bullet); self.shootCooldown = 15; LK.getSound('shoot').play(); } }; self.takeDamage = function () { if (self.invulnerable <= 0) { self.health--; self.invulnerable = 120; LK.effects.flashObject(self, 0xff0000, 500); if (self.health <= 0) { LK.showGameOver(); } } }; return self; }); var PlayerBullet = Container.expand(function () { var self = Container.call(this); var graphics = self.attachAsset('bullet', { anchorX: 0.5, anchorY: 0.5 }); self.speed = -8; self.update = function () { self.y += self.speed; // Apply isometric movement effect self.x += self.speed * -0.2; }; return self; }); var PowerUp = Container.expand(function () { var self = Container.call(this); var graphics = self.attachAsset('powerup', { anchorX: 0.5, anchorY: 0.5 }); self.speedY = 3; self.bobOffset = Math.random() * Math.PI * 2; self.startY = 0; self.update = function () { self.y += self.speedY; // Apply isometric movement effect self.x += self.speedY * 0.5; // Bobbing animation graphics.y = Math.sin(LK.ticks * 0.1 + self.bobOffset) * 10; graphics.rotation += 0.05; }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x001122 }); /**** * Game Code ****/ // Game variables var player; var enemies = []; var bullets = []; var powerups = []; var enemySpawnTimer = 0; var powerupSpawnTimer = 0; var gameSpeed = 1; var waveLevel = 1; var lastHealthDisplay = 3; // Movement variables var moveLeft = false; var moveRight = false; var moveUp = false; var moveDown = false; var dragNode = null; // Initialize player player = game.addChild(new Player()); player.x = 1024; player.y = 2200; // Score display var scoreTxt = new Text2('Score: 0', { size: 60, fill: 0x00FFFF }); scoreTxt.anchor.set(0, 0); scoreTxt.x = 120; scoreTxt.y = 50; LK.gui.topLeft.addChild(scoreTxt); // Health display var healthTxt = new Text2('Health: 3', { size: 60, fill: 0xFF0000 }); healthTxt.anchor.set(0, 0); healthTxt.x = 120; healthTxt.y = 120; LK.gui.topLeft.addChild(healthTxt); // Wave display var waveTxt = new Text2('Wave: 1', { size: 60, fill: 0xFFFF00 }); waveTxt.anchor.set(1, 0); LK.gui.topRight.addChild(waveTxt); // Touch controls game.down = function (x, y, obj) { dragNode = true; player.shoot(); handleMove(x, y, obj); }; game.up = function (x, y, obj) { dragNode = null; }; function handleMove(x, y, obj) { if (dragNode) { // Convert screen coordinates to game coordinates var gamePos = game.toLocal({ x: x, y: y }); // Smooth movement towards touch position var targetX = Math.max(100, Math.min(1948, gamePos.x)); var targetY = Math.max(200, Math.min(2600, gamePos.y)); var dx = targetX - player.x; var dy = targetY - player.y; var distance = Math.sqrt(dx * dx + dy * dy); if (distance > 20) { var speed = 8; player.x += dx / distance * speed; player.y += dy / distance * speed; } } } game.move = handleMove; // Spawn enemy function function spawnEnemy() { var enemy = new Enemy(); // Random spawn position from edges with isometric consideration var side = Math.floor(Math.random() * 4); switch (side) { case 0: // Top enemy.x = Math.random() * 2048; enemy.y = -50; enemy.speedY = 2 + Math.random() * 2; break; case 1: // Right enemy.x = 2098; enemy.y = Math.random() * 1000; enemy.speedX = -2 - Math.random() * 2; enemy.speedY = 1 + Math.random(); break; case 2: // Left enemy.x = -50; enemy.y = Math.random() * 1000; enemy.speedX = 2 + Math.random() * 2; enemy.speedY = 1 + Math.random(); break; case 3: // Top-left diagonal (isometric style) enemy.x = -50; enemy.y = -50; enemy.speedX = 3 + Math.random() * 2; enemy.speedY = 3 + Math.random() * 2; break; } // Apply game speed multiplier enemy.speedX *= gameSpeed; enemy.speedY *= gameSpeed; enemies.push(enemy); game.addChild(enemy); } // Spawn powerup function function spawnPowerup() { var powerup = new PowerUp(); powerup.x = Math.random() * 1800 + 124; powerup.y = -50; powerup.startY = powerup.y; powerups.push(powerup); game.addChild(powerup); } // Main game update game.update = function () { // Auto-shoot if (LK.ticks % 20 === 0) { player.shoot(); } // Enemy spawning enemySpawnTimer++; var spawnRate = Math.max(30 - Math.floor(waveLevel * 2), 10); if (enemySpawnTimer >= spawnRate) { spawnEnemy(); enemySpawnTimer = 0; } // Powerup spawning powerupSpawnTimer++; if (powerupSpawnTimer >= 600) { // Every 10 seconds spawnPowerup(); powerupSpawnTimer = 0; } // Update bullets for (var i = bullets.length - 1; i >= 0; i--) { var bullet = bullets[i]; if (bullet.lastY === undefined) bullet.lastY = bullet.y; // Remove bullets that go off screen if (bullet.lastY >= -30 && bullet.y < -30) { bullet.destroy(); bullets.splice(i, 1); continue; } // Check bullet-enemy collisions var hitEnemy = false; for (var j = enemies.length - 1; j >= 0; j--) { if (bullet.intersects(enemies[j])) { // Enemy hit LK.setScore(LK.getScore() + 10); scoreTxt.setText('Score: ' + LK.getScore()); // Destroy enemy enemies[j].destroy(); enemies.splice(j, 1); // Destroy bullet bullet.destroy(); bullets.splice(i, 1); LK.getSound('hit').play(); hitEnemy = true; break; } } if (!hitEnemy) { bullet.lastY = bullet.y; } } // Update enemies for (var i = enemies.length - 1; i >= 0; i--) { var enemy = enemies[i]; // Remove enemies that go off screen if (enemy.y > 2800 || enemy.x < -100 || enemy.x > 2148) { enemy.destroy(); enemies.splice(i, 1); continue; } // Check player-enemy collision if (enemy.intersects(player)) { player.takeDamage(); enemy.destroy(); enemies.splice(i, 1); } } // Update powerups for (var i = powerups.length - 1; i >= 0; i--) { var powerup = powerups[i]; // Remove powerups that go off screen if (powerup.y > 2800) { powerup.destroy(); powerups.splice(i, 1); continue; } // Check player-powerup collision if (powerup.intersects(player)) { player.health = Math.min(player.health + 1, player.maxHealth); LK.getSound('powerup').play(); LK.effects.flashObject(player, 0x00ff00, 300); powerup.destroy(); powerups.splice(i, 1); } } // Update health display if (player.health !== lastHealthDisplay) { healthTxt.setText('Health: ' + player.health); lastHealthDisplay = player.health; } // Increase difficulty over time if (LK.ticks % 1800 === 0) { // Every 30 seconds waveLevel++; gameSpeed += 0.1; waveTxt.setText('Wave: ' + waveLevel); LK.effects.flashScreen(0x0000ff, 500); } };
===================================================================
--- original.js
+++ change.js
@@ -1,6 +1,337 @@
-/****
+/****
+* Plugins
+****/
+var tween = LK.import("@upit/tween.v1");
+
+/****
+* Classes
+****/
+var Enemy = Container.expand(function () {
+ var self = Container.call(this);
+ var graphics = self.attachAsset('enemy', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.speedX = 0;
+ self.speedY = 2;
+ self.health = 1;
+ self.update = function () {
+ self.x += self.speedX;
+ self.y += self.speedY;
+ // Apply isometric movement effect
+ self.x += self.speedY * 0.5;
+ };
+ return self;
+});
+var Player = Container.expand(function () {
+ var self = Container.call(this);
+ var graphics = self.attachAsset('player', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.health = 3;
+ self.maxHealth = 3;
+ self.shootCooldown = 0;
+ self.invulnerable = 0;
+ self.update = function () {
+ if (self.shootCooldown > 0) {
+ self.shootCooldown--;
+ }
+ if (self.invulnerable > 0) {
+ self.invulnerable--;
+ graphics.alpha = self.invulnerable % 10 < 5 ? 0.5 : 1.0;
+ } else {
+ graphics.alpha = 1.0;
+ }
+ };
+ self.shoot = function () {
+ if (self.shootCooldown <= 0) {
+ var bullet = new PlayerBullet();
+ bullet.x = self.x;
+ bullet.y = self.y - 40;
+ bullets.push(bullet);
+ game.addChild(bullet);
+ self.shootCooldown = 15;
+ LK.getSound('shoot').play();
+ }
+ };
+ self.takeDamage = function () {
+ if (self.invulnerable <= 0) {
+ self.health--;
+ self.invulnerable = 120;
+ LK.effects.flashObject(self, 0xff0000, 500);
+ if (self.health <= 0) {
+ LK.showGameOver();
+ }
+ }
+ };
+ return self;
+});
+var PlayerBullet = Container.expand(function () {
+ var self = Container.call(this);
+ var graphics = self.attachAsset('bullet', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.speed = -8;
+ self.update = function () {
+ self.y += self.speed;
+ // Apply isometric movement effect
+ self.x += self.speed * -0.2;
+ };
+ return self;
+});
+var PowerUp = Container.expand(function () {
+ var self = Container.call(this);
+ var graphics = self.attachAsset('powerup', {
+ anchorX: 0.5,
+ anchorY: 0.5
+ });
+ self.speedY = 3;
+ self.bobOffset = Math.random() * Math.PI * 2;
+ self.startY = 0;
+ self.update = function () {
+ self.y += self.speedY;
+ // Apply isometric movement effect
+ self.x += self.speedY * 0.5;
+ // Bobbing animation
+ graphics.y = Math.sin(LK.ticks * 0.1 + self.bobOffset) * 10;
+ graphics.rotation += 0.05;
+ };
+ return self;
+});
+
+/****
* Initialize Game
-****/
+****/
var game = new LK.Game({
- backgroundColor: 0x000000
-});
\ No newline at end of file
+ backgroundColor: 0x001122
+});
+
+/****
+* Game Code
+****/
+// Game variables
+var player;
+var enemies = [];
+var bullets = [];
+var powerups = [];
+var enemySpawnTimer = 0;
+var powerupSpawnTimer = 0;
+var gameSpeed = 1;
+var waveLevel = 1;
+var lastHealthDisplay = 3;
+// Movement variables
+var moveLeft = false;
+var moveRight = false;
+var moveUp = false;
+var moveDown = false;
+var dragNode = null;
+// Initialize player
+player = game.addChild(new Player());
+player.x = 1024;
+player.y = 2200;
+// Score display
+var scoreTxt = new Text2('Score: 0', {
+ size: 60,
+ fill: 0x00FFFF
+});
+scoreTxt.anchor.set(0, 0);
+scoreTxt.x = 120;
+scoreTxt.y = 50;
+LK.gui.topLeft.addChild(scoreTxt);
+// Health display
+var healthTxt = new Text2('Health: 3', {
+ size: 60,
+ fill: 0xFF0000
+});
+healthTxt.anchor.set(0, 0);
+healthTxt.x = 120;
+healthTxt.y = 120;
+LK.gui.topLeft.addChild(healthTxt);
+// Wave display
+var waveTxt = new Text2('Wave: 1', {
+ size: 60,
+ fill: 0xFFFF00
+});
+waveTxt.anchor.set(1, 0);
+LK.gui.topRight.addChild(waveTxt);
+// Touch controls
+game.down = function (x, y, obj) {
+ dragNode = true;
+ player.shoot();
+ handleMove(x, y, obj);
+};
+game.up = function (x, y, obj) {
+ dragNode = null;
+};
+function handleMove(x, y, obj) {
+ if (dragNode) {
+ // Convert screen coordinates to game coordinates
+ var gamePos = game.toLocal({
+ x: x,
+ y: y
+ });
+ // Smooth movement towards touch position
+ var targetX = Math.max(100, Math.min(1948, gamePos.x));
+ var targetY = Math.max(200, Math.min(2600, gamePos.y));
+ var dx = targetX - player.x;
+ var dy = targetY - player.y;
+ var distance = Math.sqrt(dx * dx + dy * dy);
+ if (distance > 20) {
+ var speed = 8;
+ player.x += dx / distance * speed;
+ player.y += dy / distance * speed;
+ }
+ }
+}
+game.move = handleMove;
+// Spawn enemy function
+function spawnEnemy() {
+ var enemy = new Enemy();
+ // Random spawn position from edges with isometric consideration
+ var side = Math.floor(Math.random() * 4);
+ switch (side) {
+ case 0:
+ // Top
+ enemy.x = Math.random() * 2048;
+ enemy.y = -50;
+ enemy.speedY = 2 + Math.random() * 2;
+ break;
+ case 1:
+ // Right
+ enemy.x = 2098;
+ enemy.y = Math.random() * 1000;
+ enemy.speedX = -2 - Math.random() * 2;
+ enemy.speedY = 1 + Math.random();
+ break;
+ case 2:
+ // Left
+ enemy.x = -50;
+ enemy.y = Math.random() * 1000;
+ enemy.speedX = 2 + Math.random() * 2;
+ enemy.speedY = 1 + Math.random();
+ break;
+ case 3:
+ // Top-left diagonal (isometric style)
+ enemy.x = -50;
+ enemy.y = -50;
+ enemy.speedX = 3 + Math.random() * 2;
+ enemy.speedY = 3 + Math.random() * 2;
+ break;
+ }
+ // Apply game speed multiplier
+ enemy.speedX *= gameSpeed;
+ enemy.speedY *= gameSpeed;
+ enemies.push(enemy);
+ game.addChild(enemy);
+}
+// Spawn powerup function
+function spawnPowerup() {
+ var powerup = new PowerUp();
+ powerup.x = Math.random() * 1800 + 124;
+ powerup.y = -50;
+ powerup.startY = powerup.y;
+ powerups.push(powerup);
+ game.addChild(powerup);
+}
+// Main game update
+game.update = function () {
+ // Auto-shoot
+ if (LK.ticks % 20 === 0) {
+ player.shoot();
+ }
+ // Enemy spawning
+ enemySpawnTimer++;
+ var spawnRate = Math.max(30 - Math.floor(waveLevel * 2), 10);
+ if (enemySpawnTimer >= spawnRate) {
+ spawnEnemy();
+ enemySpawnTimer = 0;
+ }
+ // Powerup spawning
+ powerupSpawnTimer++;
+ if (powerupSpawnTimer >= 600) {
+ // Every 10 seconds
+ spawnPowerup();
+ powerupSpawnTimer = 0;
+ }
+ // Update bullets
+ for (var i = bullets.length - 1; i >= 0; i--) {
+ var bullet = bullets[i];
+ if (bullet.lastY === undefined) bullet.lastY = bullet.y;
+ // Remove bullets that go off screen
+ if (bullet.lastY >= -30 && bullet.y < -30) {
+ bullet.destroy();
+ bullets.splice(i, 1);
+ continue;
+ }
+ // Check bullet-enemy collisions
+ var hitEnemy = false;
+ for (var j = enemies.length - 1; j >= 0; j--) {
+ if (bullet.intersects(enemies[j])) {
+ // Enemy hit
+ LK.setScore(LK.getScore() + 10);
+ scoreTxt.setText('Score: ' + LK.getScore());
+ // Destroy enemy
+ enemies[j].destroy();
+ enemies.splice(j, 1);
+ // Destroy bullet
+ bullet.destroy();
+ bullets.splice(i, 1);
+ LK.getSound('hit').play();
+ hitEnemy = true;
+ break;
+ }
+ }
+ if (!hitEnemy) {
+ bullet.lastY = bullet.y;
+ }
+ }
+ // Update enemies
+ for (var i = enemies.length - 1; i >= 0; i--) {
+ var enemy = enemies[i];
+ // Remove enemies that go off screen
+ if (enemy.y > 2800 || enemy.x < -100 || enemy.x > 2148) {
+ enemy.destroy();
+ enemies.splice(i, 1);
+ continue;
+ }
+ // Check player-enemy collision
+ if (enemy.intersects(player)) {
+ player.takeDamage();
+ enemy.destroy();
+ enemies.splice(i, 1);
+ }
+ }
+ // Update powerups
+ for (var i = powerups.length - 1; i >= 0; i--) {
+ var powerup = powerups[i];
+ // Remove powerups that go off screen
+ if (powerup.y > 2800) {
+ powerup.destroy();
+ powerups.splice(i, 1);
+ continue;
+ }
+ // Check player-powerup collision
+ if (powerup.intersects(player)) {
+ player.health = Math.min(player.health + 1, player.maxHealth);
+ LK.getSound('powerup').play();
+ LK.effects.flashObject(player, 0x00ff00, 300);
+ powerup.destroy();
+ powerups.splice(i, 1);
+ }
+ }
+ // Update health display
+ if (player.health !== lastHealthDisplay) {
+ healthTxt.setText('Health: ' + player.health);
+ lastHealthDisplay = player.health;
+ }
+ // Increase difficulty over time
+ if (LK.ticks % 1800 === 0) {
+ // Every 30 seconds
+ waveLevel++;
+ gameSpeed += 0.1;
+ waveTxt.setText('Wave: ' + waveLevel);
+ LK.effects.flashScreen(0x0000ff, 500);
+ }
+};
\ No newline at end of file
uzayda boş boş gezen bir meteor. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
oyuncunun dokunduğu bir can puanı kazandığı bir kalp. No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
roket mermisi dik bir şekilde 90 derece sci-Fİ. In-Game asset. 2d. High contrast. No shadows
space shooter oyununda ki uzay gemisinin aynısı. In-Game asset. 2d. High contrast. No shadows
ProjectileSpace shooter oyununda, uzay gemisinin ucundan çıkan, ileriye doğru düz bir hat üzerinde giden ışıklı mermi (projectile) çizer misin? Görsel olarak enerjik, fütüristik ve renkli olabilir. Arka planda uzay boşluğu olabilir. transparent. In-Game asset. 2d. High contrast. No shadows