User prompt
Que el jugador sea más grande
User prompt
Que los pinchos sean más grandes y cubran toda la plataforma
User prompt
Que en alguna plataformas haya pinchos que te matan
User prompt
Que salte aún más a la derecha y a la izquierda
User prompt
Que salte hacia la plataforma donde apunta el jugador
User prompt
Que también salte al frente y a la izquierda
User prompt
Que el jugador salte a la izquierda y a la derecha
User prompt
Que el jugador salte cuando el jugador hace click en la pantalla
User prompt
Que el jugador salte más alto
Code edit (1 edits merged)
Please save this source code
User prompt
Platform Jumper
Initial prompt
Un juego de plataformas en las que tenés que saltarlas
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ var Platform = Container.expand(function (x, y) { var self = Container.call(this); var platformGraphics = self.attachAsset('platform', { anchorX: 0.5, anchorY: 0.5 }); self.x = x; self.y = y; return self; }); var Player = Container.expand(function () { var self = Container.call(this); var playerGraphics = self.attachAsset('player', { anchorX: 0.5, anchorY: 1.0 }); self.velocityY = 0; self.velocityX = 0; self.gravity = 0.8; self.jumpPower = 0; self.isOnGround = false; self.isCharging = false; self.maxJumpPower = 35; self.update = function () { // Apply gravity if (!self.isOnGround) { self.velocityY += self.gravity; } // Update position self.y += self.velocityY; self.x += self.velocityX; // Apply horizontal friction self.velocityX *= 0.92; // Keep player within screen bounds if (self.x < 40) { self.x = 40; self.velocityX = 0; } if (self.x > 2008) { self.x = 2008; self.velocityX = 0; } // Check platform collisions self.checkPlatformCollisions(); // Check if fallen off screen if (self.y > 2732 + 100) { LK.showGameOver(); } }; self.checkPlatformCollisions = function () { var wasOnGround = self.isOnGround; self.isOnGround = false; for (var i = 0; i < platforms.length; i++) { var platform = platforms[i]; if (self.intersects(platform) && self.velocityY >= 0) { var playerBottom = self.y; var platformTop = platform.y - platform.height / 2; if (playerBottom >= platformTop - 20 && playerBottom <= platformTop + 20) { self.y = platformTop; self.velocityY = 0; self.isOnGround = true; if (!wasOnGround) { LK.getSound('land').play(); // Score point for landing on platform if (platform.scored === undefined) { platform.scored = true; LK.setScore(LK.getScore() + 1); scoreTxt.setText(LK.getScore()); } } break; } } } }; self.startJump = function () { if (self.isOnGround) { self.isCharging = true; self.jumpPower = 0; } }; self.chargeJump = function () { if (self.isCharging && self.jumpPower < self.maxJumpPower) { self.jumpPower += 0.8; } }; self.executeJump = function () { if (self.isCharging && self.isOnGround) { self.velocityY = -self.jumpPower; self.isOnGround = false; self.isCharging = false; LK.getSound('jump').play(); } }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x87CEEB }); /**** * Game Code ****/ var player; var platforms = []; var scoreTxt; // Create score display scoreTxt = new Text2('0', { size: 100, fill: 0xFFFFFF }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); scoreTxt.y = 50; // Create player player = game.addChild(new Player()); player.x = 1024; player.y = 2500; // Create initial platforms function createPlatform(x, y) { var platform = new Platform(x, y); platforms.push(platform); game.addChild(platform); return platform; } // Starting platform createPlatform(1024, 2600); // Generate platforms going upward for (var i = 0; i < 20; i++) { var x = Math.random() * 1600 + 224; // Random X between 224 and 1824 var y = 2400 - i * 200 + (Math.random() * 100 - 50); // Going upward with some variation createPlatform(x, y); } // Camera following var cameraY = 0; game.down = function (x, y, obj) { if (player.isOnGround) { // Convert tap position to game coordinates var gamePos = game.toLocal({ x: x, y: y }); // Find the closest platform to the tap position var closestPlatform = null; var closestDistance = Infinity; for (var i = 0; i < platforms.length; i++) { var platform = platforms[i]; // Only consider platforms that are above the player if (platform.y < player.y - 50) { var distance = Math.sqrt(Math.pow(platform.x - gamePos.x, 2) + Math.pow(platform.y - gamePos.y, 2)); if (distance < closestDistance) { closestDistance = distance; closestPlatform = platform; } } } if (closestPlatform) { // Calculate jump trajectory toward the platform var deltaX = closestPlatform.x - player.x; var deltaY = closestPlatform.y - player.y; var distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY); // Normalize horizontal velocity based on distance to platform var horizontalSpeed = 10; if (distance > 0) { player.velocityX = deltaX / distance * horizontalSpeed; } } else { // Fallback to old system if no platform found var screenCenterX = 1024; if (x < screenCenterX) { player.velocityX = -8; } else { player.velocityX = 8; } } player.velocityY = -player.maxJumpPower; player.isOnGround = false; LK.getSound('jump').play(); } }; game.update = function () { // Update camera to follow player var targetCameraY = player.y - 1800; if (targetCameraY < cameraY) { cameraY += (targetCameraY - cameraY) * 0.1; game.y = -cameraY; } // Generate new platforms as player goes higher var highestPlatform = Math.min.apply(Math, platforms.map(function (p) { return p.y; })); if (player.y < highestPlatform + 1000) { for (var i = 0; i < 5; i++) { var x = Math.random() * 1600 + 224; var y = highestPlatform - 200 - i * 200 + (Math.random() * 100 - 50); createPlatform(x, y); } } // Clean up platforms that are too far below for (var i = platforms.length - 1; i >= 0; i--) { if (platforms[i].y > player.y + 1500) { platforms[i].destroy(); platforms.splice(i, 1); } } };
===================================================================
--- original.js
+++ change.js
@@ -146,30 +146,49 @@
// Camera following
var cameraY = 0;
game.down = function (x, y, obj) {
if (player.isOnGround) {
- player.velocityY = -player.maxJumpPower;
- player.isOnGround = false;
- LK.getSound('jump').play();
- // Add horizontal movement based on tap position
- var screenCenterX = 1024; // Half of screen width (2048/2)
- var screenCenterY = 1366; // Half of screen height (2732/2)
- // Determine horizontal movement (left/right)
- if (x < screenCenterX) {
- // Tap on left side - jump left
- player.velocityX = -8;
- } else {
- // Tap on right side - jump right
- player.velocityX = 8;
+ // Convert tap position to game coordinates
+ var gamePos = game.toLocal({
+ x: x,
+ y: y
+ });
+ // Find the closest platform to the tap position
+ var closestPlatform = null;
+ var closestDistance = Infinity;
+ for (var i = 0; i < platforms.length; i++) {
+ var platform = platforms[i];
+ // Only consider platforms that are above the player
+ if (platform.y < player.y - 50) {
+ var distance = Math.sqrt(Math.pow(platform.x - gamePos.x, 2) + Math.pow(platform.y - gamePos.y, 2));
+ if (distance < closestDistance) {
+ closestDistance = distance;
+ closestPlatform = platform;
+ }
+ }
}
- // Determine depth movement (forward/backward) based on Y position
- if (y < screenCenterY) {
- // Tap on upper half - jump forward (reduce X velocity slightly for forward effect)
- player.velocityX *= 0.8;
+ if (closestPlatform) {
+ // Calculate jump trajectory toward the platform
+ var deltaX = closestPlatform.x - player.x;
+ var deltaY = closestPlatform.y - player.y;
+ var distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY);
+ // Normalize horizontal velocity based on distance to platform
+ var horizontalSpeed = 10;
+ if (distance > 0) {
+ player.velocityX = deltaX / distance * horizontalSpeed;
+ }
} else {
- // Tap on lower half - jump backward (increase X velocity for backward effect)
- player.velocityX *= 1.2;
+ // Fallback to old system if no platform found
+ var screenCenterX = 1024;
+ if (x < screenCenterX) {
+ player.velocityX = -8;
+ } else {
+ player.velocityX = 8;
+ }
}
+ player.velocityY = -player.maxJumpPower;
+ player.isOnGround = false;
+ LK.getSound('jump').play();
}
};
game.update = function () {
// Update camera to follow player