User prompt
move player down near the road line
User prompt
move the obstacle position down near the road line
User prompt
change positions of obstacles and players exactly like firefit asset
User prompt
move the position of obstacle little down
User prompt
add background theme for the game
User prompt
make player hits new obstacles also leads game over
Code edit (1 edits merged)
Please save this source code
User prompt
make player hit the barrier also leads game over and add two more obstsacle
Code edit (2 edits merged)
Please save this source code
User prompt
Increase player's jump height by adjusting jumpSpeed
User prompt
dont show jumping values text in the screen
User prompt
jump the player some more height
User prompt
i need the player jump some height while i swipe up so that player jumps over the obstacles
User prompt
remove all the jump mechanics from player
User prompt
remove jump mechanics
User prompt
Ensured precise return to original position after jumping
User prompt
Simplified the jump animation with fixed height (300px) Used proper easing functions (easeOutQuad/easeInQuad) Ensured precise return to original position
User prompt
activate jump mechanics
User prompt
remove duck functionality
Code edit (1 edits merged)
Please save this source code
User prompt
Ensure player jumps triple the height of the player when swiping up anywhere in the screen
User prompt
make it work Ensure player jumps triple the height of the player when swiping up
User prompt
ensure player jump upside triple of height of the player when swipe the screen
User prompt
player mechanics not working
User prompt
remove old player mmechanic and add this Swipe up to jump,\ndown to dive
/**** * Plugins ****/ var storage = LK.import("@upit/storage.v1"); /**** * Classes ****/ var Obstacle = Container.expand(function (type) { var self = Container.call(this); var obstacleGraphics; self.type = type || 'step'; self.speed = 0; if (self.type === 'step') { obstacleGraphics = self.attachAsset('obstacle', { anchorX: 0.5, anchorY: 1.0 }); } else if (self.type === 'barrier') { obstacleGraphics = self.attachAsset('barrier', { anchorX: 0.5, anchorY: 1.0 }); } else if (self.type === 'firePit') { obstacleGraphics = self.attachAsset('firePit', { anchorX: 0.5, anchorY: 0.5 }); } else if (self.type === 'car') { obstacleGraphics = self.attachAsset('car', { anchorX: 0.5, anchorY: 1.0 }); } self.update = function () { self.x -= self.speed; }; self.getCollisionBounds = function () { return { x: self.x - obstacleGraphics.width / 2, y: self.y - obstacleGraphics.height, width: obstacleGraphics.width, height: obstacleGraphics.height }; }; self.isLowObstacle = function () { return self.type === 'step' || self.type === 'firePit'; }; self.isHighObstacle = function () { return self.type === 'barrier'; }; return self; }); var Player = Container.expand(function () { var self = Container.call(this); var playerGraphics = self.attachAsset('player', { anchorX: 0.5, anchorY: 1.0 }); self.isJumping = false; self.isDucking = false; self.defaultHeight = playerGraphics.height; self.defaultY = 0; self.jump = function () { if (!self.isJumping && !self.isDucking) { self.isJumping = true; LK.getSound('jump').play(); // Jump animation tween(self, { y: self.defaultY - 300 }, { duration: 500, easing: tween.easeOut, onFinish: function onFinish() { // Fall down animation tween(self, { y: self.defaultY }, { duration: 500, easing: tween.easeIn, onFinish: function onFinish() { self.isJumping = false; self.y = self.defaultY; // Ensure player returns to default position } }); } }); } }; self.duck = function () { if (!self.isJumping && !self.isDucking) { self.isDucking = true; playerGraphics.height = self.defaultHeight / 2; // Auto stand up after 1 second LK.setTimeout(function () { if (self.isDucking) { playerGraphics.height = self.defaultHeight; self.isDucking = false; self.standUp(); // Ensure player stands up after ducking } }, 1000); } }; self.standUp = function () { if (self.isDucking) { playerGraphics.height = self.defaultHeight; self.isDucking = false; } }; self.getCollisionBounds = function () { return { x: self.x - playerGraphics.width / 2, y: self.y - playerGraphics.height, width: playerGraphics.width, height: playerGraphics.height }; }; self.update = function () { // Move player to the right automatically }; return self; }); var RoadLine = Container.expand(function () { var self = Container.call(this); var lineGraphics = self.attachAsset('roadLine', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 0; self.update = function () { self.x += gameSpeed; // Move player to the right automatically self.x -= self.speed; // Reset position when off screen if (self.x < -lineGraphics.width) { self.x = 2048 + lineGraphics.width; } }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 // Black }); /**** * Game Code ****/ // Game variables var player; var obstacles = []; var roadLines = []; var gameSpeed = 10; var spawnTimer = 0; var minSpawnTime = 60; var maxSpawnTime = 120; var nextSpawnTime = 100; var distance = 0; var isGameOver = false; var shouldSpawnObstacle = true; // Create road var road = game.addChild(LK.getAsset('road', { anchorX: 0.5, anchorY: 0 })); road.x = 2048 / 2; road.y = 2732 - 600; // Create player player = game.addChild(new Player()); player.x = 300; player.y = 2732 - 600; player.defaultY = player.y; // Create road lines for (var i = 0; i < 20; i++) { var roadLine = new RoadLine(); roadLine.x = i * 200; roadLine.y = 2732 - 600 + 300; roadLine.speed = gameSpeed; roadLines.push(roadLine); game.addChild(roadLine); } // Score display var scoreTxt = new Text2('0m', { size: 80, fill: 0xFFFFFF }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); // Initialize player input function handleDown(x, y, obj) { // Jump if swiping up if (obj.event && obj.event.type === 'swipe' && obj.event.direction === 'up') { player.jump(); } else if (obj.event && obj.event.type === 'swipe' && obj.event.direction === 'down') { // Duck if swiping down player.duck(); } } function handleUp(x, y, obj) { // Stand up when releasing swipe down if (player.isDucking) { player.standUp(); } } // Set up input handlers game.down = handleDown; game.up = handleUp; // Check collision between player and obstacle function checkCollision(playerBounds, obstacleBounds) { return !(playerBounds.x + playerBounds.width < obstacleBounds.x || playerBounds.x > obstacleBounds.x + obstacleBounds.width || playerBounds.y + playerBounds.height < obstacleBounds.y || playerBounds.y > obstacleBounds.y + obstacleBounds.height); } // Spawn a new obstacle function spawnObstacle() { if (!shouldSpawnObstacle) { return; } var types = ['step', 'barrier', 'firePit', 'car']; var type = types[Math.floor(Math.random() * types.length)]; var obstacle = new Obstacle(type); obstacle.x = 2048 + 100; obstacle.y = 2732 - 600; // Adjust Y position based on obstacle type if (type === 'firePit') { obstacle.y += 50; } else if (type === 'car') { obstacle.x += Math.random() * 500; // Add some random extra distance for cars } obstacle.speed = gameSpeed; obstacles.push(obstacle); game.addChild(obstacle); // Set next spawn time nextSpawnTime = minSpawnTime + Math.floor(Math.random() * (maxSpawnTime - minSpawnTime)); spawnTimer = 0; } // Handle game over function gameOver() { if (!isGameOver) { isGameOver = true; shouldSpawnObstacle = false; LK.getSound('crash').play(); // Save high score var highScore = storage.highScore || 0; if (distance > highScore) { storage.highScore = distance; } // Show game over screen LK.effects.flashScreen(0xff0000, 500); LK.setTimeout(function () { LK.showGameOver(); }, 1000); } } // Update function called each frame game.update = function () { if (isGameOver) { return; } // Increase distance score distance += 1; scoreTxt.setText(Math.floor(distance / 10) + "m"); // Gradually increase game speed if (distance % 500 === 0 && gameSpeed < 25) { gameSpeed += 0.5; // Update road line speed for (var i = 0; i < roadLines.length; i++) { roadLines[i].speed = gameSpeed; } // Update obstacle speed for (var j = 0; j < obstacles.length; j++) { obstacles[j].speed = gameSpeed; } // Decrease spawn time as game progresses if (minSpawnTime > 30) { minSpawnTime -= 2; } if (maxSpawnTime > 60) { maxSpawnTime -= 5; } } // Update road lines for (var i = 0; i < roadLines.length; i++) { roadLines[i].update(); } // Spawn obstacles spawnTimer++; if (spawnTimer >= nextSpawnTime) { spawnObstacle(); } // Update player position player.update(); // Update and check collisions with obstacles for (var j = obstacles.length - 1; j >= 0; j--) { var obstacle = obstacles[j]; obstacle.update(); // Remove obstacles that are off screen if (obstacle.x < -200) { obstacle.destroy(); obstacles.splice(j, 1); continue; } // Check collision var playerBounds = player.getCollisionBounds(); var obstacleBounds = obstacle.getCollisionBounds(); // Only check collision if: // - Player is not jumping AND obstacle is low (step/fire pit) // - Player is not ducking AND obstacle is high (barrier) var collisionDetected = false; if (!player.isJumping && obstacle.isLowObstacle()) { collisionDetected = checkCollision(playerBounds, obstacleBounds); } else if (!player.isDucking && obstacle.isHighObstacle()) { collisionDetected = checkCollision(playerBounds, obstacleBounds); } else if (obstacle.type === 'car') { // Cars always need to be jumped over collisionDetected = checkCollision(playerBounds, obstacleBounds); } if (collisionDetected) { gameOver(); break; } } }; // Start background music LK.playMusic('bgmusic', { fade: { start: 0, end: 0.5, duration: 1000 } });
===================================================================
--- original.js
+++ change.js
@@ -80,9 +80,8 @@
easing: tween.easeIn,
onFinish: function onFinish() {
self.isJumping = false;
self.y = self.defaultY; // Ensure player returns to default position
- self.isJumping = false; // Reset jumping state
}
});
}
});
@@ -96,8 +95,9 @@
LK.setTimeout(function () {
if (self.isDucking) {
playerGraphics.height = self.defaultHeight;
self.isDucking = false;
+ self.standUp(); // Ensure player stands up after ducking
}
}, 1000);
}
};