User prompt
Please fix the bug: 'Script error.' in or related to this line: 'var road2 = game.addChild(new Road2());' Line Number: 157
User prompt
Keeping the same X axis, pin the railings onto the Road so that they create an endless line of railings. Add instances as needed to avoid pop in as they refresh.
User prompt
Move left railing left by 3%
User prompt
Move both railings out from the center by 3%
User prompt
Move both railings out from the center 3%
User prompt
Please fix the bug: 'Script error.' in or related to this line: 'rightRailing.x = 2048 * 0.82; // Move right railing 7% out from center' Line Number: 168
User prompt
Move both out another 3%
User prompt
Move both railings out from center by 4%
User prompt
Place railing asset on top of road 25% from either side of the screen.
User prompt
Set up code to spawn Drones coming from the top of the screen.
User prompt
Rename enemy class as Drone and use Drone asset
User prompt
Move player landing position up 3%
User prompt
Reduce the variance another 50%
User prompt
Reduce the variance by half
User prompt
Vary dust particles X travel slightly.
User prompt
Hero bullets should originate from the top middle of player.
User prompt
Make rotation slightly faster
User prompt
Dust particles are fully visible on spawn before fading. Speed up their downward speed slightly and a slow random rotation to them.
User prompt
Move them 2% more
User prompt
Move both spawns up 2% and keep all other alignment.
User prompt
Create another dust spawn point an equal distance in from the right of the player asset and alternate their spawn intervals.
User prompt
Move back right half as much as the last move
User prompt
Move dust spawn position left on player
User prompt
Dust particles should start at 75% opacity and then fade out at a medium pace
User prompt
Dust particle generation interval should be in time with the pulsing of player.
/****
* Classes
****/
// Dust class for dust particles
var Dust = Container.expand(function () {
var self = Container.call(this);
var dustGraphics = self.attachAsset('Dust', {
anchorX: 0.5,
anchorY: 0.5
});
dustGraphics.alpha = 0.5;
self.speed = Math.random() * 2 + 1;
self.direction = Math.random() * Math.PI * 2;
self.update = function () {
self.y += self.speed;
if (self.y > 2732) {
self.destroy();
}
};
});
// Enemy class representing the enemy robots
var Enemy = Container.expand(function () {
var self = Container.call(this);
var enemyGraphics = self.attachAsset('enemy', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 3;
self.update = function () {
self.y += self.speed;
if (self.y > 2732) {
self.destroy();
}
};
});
// Assets will be automatically created and loaded by the LK engine based on their usage in the code.
// Hero class representing the player's spaceship
var Hero = Container.expand(function () {
var self = Container.call(this);
self.prevX = self.x; // Initialize prevX with the current x position
var heroGraphics = self.attachAsset('hero', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 10;
self.update = function () {
if (self.y > 2375) {
self.y -= self.speed;
}
// Add rotation based on movement direction
if (self.x > self.prevX) {
self.rotation += Math.PI / 180 * 1; // Rotate 1 degree to the right
if (self.rotation > Math.PI / 180 * 5) {
self.rotation = Math.PI / 180 * 5;
}
} else if (self.x < self.prevX) {
self.rotation -= Math.PI / 180 * 1; // Rotate 1 degree to the left
if (self.rotation < Math.PI / 180 * -5) {
self.rotation = Math.PI / 180 * -5;
}
} else {
if (self.rotation > 0) {
self.rotation -= Math.PI / 180 * 1;
if (self.rotation < 0) {
self.rotation = 0;
}
} else if (self.rotation < 0) {
self.rotation += Math.PI / 180 * 1;
if (self.rotation > 0) {
self.rotation = 0;
}
}
}
self.prevX = self.x; // Store the current x position for the next frame
// Add scale change to simulate footsteps
if (LK.ticks % 24 < 12) {
self.scale.x = 1.02;
} else {
self.scale.x = 0.98;
}
};
});
// Bullet class for hero's bullets
var HeroBullet = Container.expand(function () {
var self = Container.call(this);
var bulletGraphics = self.attachAsset('heroBullet', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = -15;
self.update = function () {
self.y += self.speed;
if (self.y < 0) {
self.destroy();
}
};
});
// Road class for the scrolling road
var Road = Container.expand(function () {
var self = Container.call(this);
var roadGraphics = self.attachAsset('Road', {
anchorX: 0.5,
anchorY: 0
});
self.speed = 2;
self.update = function () {
self.y += self.speed;
if (self.y >= 2732) {
self.y = -2732;
}
};
});
// Road2 class for the scrolling road
var Road2 = Container.expand(function () {
var self = Container.call(this);
var roadGraphics = self.attachAsset('Road2', {
anchorX: 0.5,
anchorY: 0
});
self.speed = 2;
self.update = function () {
self.y += self.speed;
if (self.y >= 2732) {
self.y = -2732;
}
};
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000000 //Init game with black background
});
/****
* Game Code
****/
// Initialize the road instances
var road1 = game.addChild(new Road());
var road2 = game.addChild(new Road2());
road2.x = 2048 / 2 * 0.94;
road1.x = 2048 / 2;
road1.y = 0;
road2.y = -2732;
// Initialize variables
var hero = game.addChild(new Hero());
hero.x = 2048 / 2;
hero.y = 2732 + hero.height;
var enemies = [];
var heroBullets = [];
// Function to handle game updates
game.update = function () {
// Update the road instances
road1.update();
road2.update();
// Update hero position based on touch input
if (dragNode) {
hero.x = dragNode.x;
hero.y = dragNode.y;
}
// Update enemies
for (var i = enemies.length - 1; i >= 0; i--) {
enemies[i].update();
if (enemies[i].intersects(hero)) {
LK.effects.flashScreen(0xff0000, 1000);
LK.showGameOver();
}
}
// Update hero bullets
for (var j = heroBullets.length - 1; j >= 0; j--) {
heroBullets[j].update();
for (var k = enemies.length - 1; k >= 0; k--) {
if (heroBullets[j].intersects(enemies[k])) {
enemies[k].destroy();
heroBullets[j].destroy();
enemies.splice(k, 1);
heroBullets.splice(j, 1);
LK.setScore(LK.getScore() + 1);
scoreTxt.setText(LK.getScore());
break;
}
}
}
// Stop enemy generation
// Fire bullets
if (LK.ticks % 30 == 0) {
var newBullet = new HeroBullet();
newBullet.x = hero.x;
newBullet.y = hero.y;
heroBullets.push(newBullet);
game.addChild(newBullet);
}
// Generate dust particles in sync with player pulsing
if (LK.ticks % 24 == 0) {
var newDust = new Dust();
newDust.x = hero.x;
newDust.y = hero.y + hero.height / 2;
game.addChild(newDust);
}
};
// Handle touch input for hero movement
var dragNode = null;
game.down = function (x, y, obj) {
dragNode = {
x: hero.x,
y: hero.y
};
// Add a tilt-back effect during initial movement
hero.rotation = x > hero.x ? Math.PI / 180 * -1 : Math.PI / 180 * 1;
};
game.move = function (x, y, obj) {
if (dragNode) {
// Add a slight delay to the drag control to make the player feel like it has more weight
dragNode.x += (x - dragNode.x) * 0.1;
dragNode.y = hero.y; // Lock the y position to the hero's initial y position
}
};
game.up = function (x, y, obj) {
dragNode = null;
};
// Display score
var scoreTxt = new Text2('0', {
size: 150,
fill: "#ffffff"
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
scoreTxt.setText(LK.getScore());
View of a futuristic soldier from directly overhead. White armor with blue glowing cyberpunk details. Holding weapon forward.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
The lights of a futuristic city in the dark at night. Very high above it looking straight down like from an airplane or a map. Background for an endlessly scrolling game.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A big button that say Play to start playing a game. Use neon cyberpunk style.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Overhead view. A hovering robot with a tapered midsection with two bulky arms with claw like hands and a giant red “eye” on top of its body. Looking straight down. Cyberpunk, black with red glowing highlights.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Overhead view. A heavily armored attack robot. Two arms with large gauntlet type fists. Four large red glowing eyes. Three distinct parts, body and two arms. Symmetrical design. Birds Eye view above them looking down on their head. Simple shapes. Low detail. Cyberpunk, black with red glowing highlights.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A red glowing line. Bright red core with subtle outer glow. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A blue transparent dome type shield. Simple graphics. Low details. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A ring of nuclear fire seen from overhead. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
A thin robot with goggles riding a hover-bike. Twin blaster guns mounted on front. Top down view. Birds Eye view. Cyberpunk with red glowing highlights... Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
Battle drone, circular. White with blue glowing highlights. Birds Eye view from overhead. Cyberpunk. Simple shapes.. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows.
GameTheme
Music
TitleTheme
Music
HeroBlaster
Sound effect
Explosion
Sound effect
PowerUp
Sound effect
CloneSoldier
Sound effect
WeaponPowerUp
Sound effect
Drone
Sound effect
BinaryStorm
Sound effect
LaserCharge
Sound effect
LaserFire
Sound effect
BruiserStomp
Sound effect
RaiderSwoop
Sound effect
ShieldLevelUp
Sound effect
HeroHit
Sound effect
HeroScream
Sound effect