User prompt
herobullet should not destroy obstacles
User prompt
destroy bullet when it collides with enemy
User prompt
when herobullet collides with obstacle, bullet will be destroyed
User prompt
move wing up and down 10 pixels all the time
User prompt
add an asset for wing for hero
User prompt
add collision detection in game between the hero bullets and the obstacle
User prompt
move enemy 200 pixels down
User prompt
move enemy 400 pixels up
Code edit (1 edits merged)
Please save this source code
User prompt
bullets should move downwards
Code edit (1 edits merged)
Please save this source code
User prompt
fix he bullets are not being destroyed upon collision due to incorrect usage of the `splice` method on an undefined array and the absence of a call to the bullet's `destroy` method to remove it from the scene graph.
User prompt
remove bullet from game when it hits and obstacle
User prompt
when hero bullet collides with obstacle is should be destroyed
User prompt
make hero wing move up and down 10 pixels all the time
User prompt
make hero wing rotate faster than the hero
User prompt
create asset hero wing
User prompt
destroy bullet if it collides with enemy
User prompt
when herobutllet collides with enemy or obstacle it should be destroyed
User prompt
Fix Bug: 'ReferenceError: obstacles is not defined' in this line: 'for (var j = obstacles.length - 1; j >= 0; j--) {' Line Number: 39
User prompt
add collision for hero bullet and obstacles and enemies
User prompt
add spatial partitionoing to detect colisions
User prompt
imrpove game performance
User prompt
enemies should move in a straight line
User prompt
add enemy movemt on tick
var Obstacle = Container.expand(function () { var self = Container.call(this); var obstacleGraphics = self.createAsset('obstacle', 'Obstacle', .5, .5); self.speed = -3; self.move = function () { self.x += self.speed; }; }); var HeroBullet = Container.expand(function () { var self = Container.call(this); var bulletGraphics = self.createAsset('bullet', 'Hero Bullet', .5, .5); self.speed = 5; self.move = function () { self.y += self.speed; }; }); var Hero = Container.expand(function () { var self = Container.call(this); var heroGraphics = self.createAsset('hero', 'Hero character', .5, .5); self.speed = 0; self.bullets = []; self.gravity = 0.2; self.jump = function () { self.speed = -10; }; self.update = function () { self.speed += self.gravity; self.y += self.speed; self.rotation = self.speed * 0.05; for (var i = self.bullets.length - 1; i >= 0; i--) { self.bullets[i].move(); if (self.bullets[i].y > 2732) { self.bullets[i].destroy(); self.bullets.splice(i, 1); } } }; }); var Enemy = Container.expand(function () { var self = Container.call(this); var enemyGraphics = self.createAsset('enemy', 'Enemy', .5, .5); self.speedX = -3; self.speedY = 0; self.amplitude = 100; self.frequency = 0.05; self.move = function () { self.x += self.speedX; self.y += self.speedY; }; }); var Game = Container.expand(function () { var self = Container.call(this); LK.stageContainer.setBackgroundColor(0x87CEEB); var hero = self.addChild(new Hero()); hero.x = 2048 / 2 - 200; hero.y = 2732 / 2; var obstacles = []; var score = 0; var scoreTxt = new Text2('0', { size: 150, fill: "#ffffff" }); LK.gui.topCenter.addChild(scoreTxt); scoreTxt.anchor.set(.5, 0); var isGameOver = false; var tickOffset = 0; LK.on('tick', function () { hero.update(); if (hero.y > 2732 || hero.y < 0) { isGameOver = true; } for (var i = obstacles.length - 1; i >= 0; i--) { obstacles[i].move(); if (obstacles[i] instanceof Enemy) { obstacles[i].move(); } if (obstacles[i].x < -50) { obstacles[i].destroy(); obstacles.splice(i, 1); score++; scoreTxt.setText(score); } if (hero.intersects(obstacles[i])) { isGameOver = true; } } if (tickOffset++ % 120 == 0) { var newObstacle = new Obstacle(); newObstacle.x = 2048; newObstacle.y = Math.random() * 2732; obstacles.push(newObstacle); self.addChild(newObstacle); } if (tickOffset % 240 == 0) { var enemy = new Enemy(); enemy.x = 2048; enemy.y = 2732 - enemy.height / 2; self.addChild(enemy); obstacles.push(enemy); } if (isGameOver) { LK.effects.flashScreen(0xff0000, 1000); LK.showGameOver(); } }); stage.on('down', function (obj) { hero.jump(); var bullet = new HeroBullet(); bullet.x = hero.x; bullet.y = hero.y; self.addChild(bullet); hero.bullets.push(bullet); }); });
===================================================================
--- original.js
+++ change.js
@@ -44,9 +44,9 @@
self.amplitude = 100;
self.frequency = 0.05;
self.move = function () {
self.x += self.speedX;
- self.y += self.amplitude * Math.sin(self.frequency * LK.ticks);
+ self.y += self.speedY;
};
});
var Game = Container.expand(function () {
var self = Container.call(this);