/**** * Classes ****/ var ControlButton = Container.expand(function (type) { var self = Container.call(this); self.buttonType = type; self.isPressed = false; var buttonGraphics; if (type === 'jump') { buttonGraphics = self.attachAsset('jumpButton', { anchorX: 0.5, anchorY: 0.5 }); } else { buttonGraphics = self.attachAsset(type === 'left' ? 'leftButton' : 'rightButton', { anchorX: 0.5, anchorY: 0.5 }); } self.down = function (x, y, obj) { self.isPressed = true; buttonGraphics.alpha = 0.7; }; self.up = function (x, y, obj) { self.isPressed = false; buttonGraphics.alpha = 1.0; }; return self; }); var Platform = Container.expand(function (width, height) { var self = Container.call(this); self.platformWidth = width || 300; self.platformHeight = height || 40; var platformGraphics = self.attachAsset('platform', { anchorX: 0.5, anchorY: 0.5, scaleX: self.platformWidth / 300, scaleY: self.platformHeight / 40 }); return self; }); var Player = Container.expand(function () { var self = Container.call(this); var playerGraphics = self.attachAsset('player', { anchorX: 0.5, anchorY: 1.0 }); self.velocityX = 0; self.velocityY = 0; self.speed = 8; self.jumpPower = 20; self.gravity = 0.8; self.onGround = false; self.maxFallSpeed = 15; self.moveLeft = function () { self.velocityX = -self.speed; }; self.moveRight = function () { self.velocityX = self.speed; }; self.jump = function () { if (self.onGround) { self.velocityY = -self.jumpPower; self.onGround = false; } }; self.stopHorizontalMovement = function () { self.velocityX = 0; }; self.update = function () { // Apply gravity self.velocityY += self.gravity; // Limit fall speed if (self.velocityY > self.maxFallSpeed) { self.velocityY = self.maxFallSpeed; } // Update position self.x += self.velocityX; self.y += self.velocityY; // Keep player within screen bounds horizontally if (self.x < 60) { self.x = 60; } if (self.x > 1988) { self.x = 1988; } // Reset onGround flag self.onGround = false; }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x87ceeb }); /**** * Game Code ****/ var player = game.addChild(new Player()); player.x = 1024; player.y = 2500; var platforms = []; var ground = game.addChild(LK.getAsset('ground', { anchorX: 0.5, anchorY: 1.0 })); ground.x = 1024; ground.y = 2732; // Create platforms var platformData = [{ x: 400, y: 2400, width: 200 }, { x: 800, y: 2200, width: 250 }, { x: 1200, y: 2000, width: 200 }, { x: 600, y: 1800, width: 300 }, { x: 1400, y: 1600, width: 200 }, { x: 300, y: 1400, width: 250 }, { x: 1000, y: 1200, width: 300 }, { x: 1600, y: 1000, width: 200 }]; for (var i = 0; i < platformData.length; i++) { var platformInfo = platformData[i]; var platform = game.addChild(new Platform(platformInfo.width)); platform.x = platformInfo.x; platform.y = platformInfo.y; platforms.push(platform); } // Control buttons var leftButton = LK.gui.bottomLeft.addChild(new ControlButton('left')); leftButton.x = 80; leftButton.y = -80; var rightButton = LK.gui.bottomLeft.addChild(new ControlButton('right')); rightButton.x = 220; rightButton.y = -80; var jumpButton = LK.gui.bottomRight.addChild(new ControlButton('jump')); jumpButton.x = -80; jumpButton.y = -80; // Control button labels var leftLabel = new Text2('←', { size: 60, fill: 0xFFFFFF }); leftLabel.anchor.set(0.5, 0.5); leftButton.addChild(leftLabel); var rightLabel = new Text2('→', { size: 60, fill: 0xFFFFFF }); rightLabel.anchor.set(0.5, 0.5); rightButton.addChild(rightLabel); var jumpLabel = new Text2('↑', { size: 60, fill: 0xFFFFFF }); jumpLabel.anchor.set(0.5, 0.5); jumpButton.addChild(jumpLabel); function checkCollisions() { var playerBottom = player.y; var playerTop = player.y - 120; var playerLeft = player.x - 60; var playerRight = player.x + 60; // Check ground collision if (playerBottom >= ground.y - 50) { if (player.velocityY > 0) { player.y = ground.y - 50; player.velocityY = 0; player.onGround = true; } } // Check platform collisions for (var i = 0; i < platforms.length; i++) { var platform = platforms[i]; var platformLeft = platform.x - platform.platformWidth / 2; var platformRight = platform.x + platform.platformWidth / 2; var platformTop = platform.y - platform.platformHeight / 2; var platformBottom = platform.y + platform.platformHeight / 2; // Check if player is horizontally aligned with platform if (playerRight > platformLeft && playerLeft < platformRight) { // Check if player is falling onto platform from above if (player.velocityY > 0 && playerBottom >= platformTop && playerTop < platformTop) { player.y = platformTop; player.velocityY = 0; player.onGround = true; } } } } game.update = function () { // Handle input if (leftButton.isPressed) { player.moveLeft(); } else if (rightButton.isPressed) { player.moveRight(); } else { player.stopHorizontalMovement(); } if (jumpButton.isPressed) { player.jump(); } // Check collisions checkCollisions(); // Check if player fell off screen if (player.y > 2800) { // Reset player position player.x = 1024; player.y = 2500; player.velocityX = 0; player.velocityY = 0; } };
===================================================================
--- original.js
+++ change.js
@@ -77,13 +77,13 @@
// Update position
self.x += self.velocityX;
self.y += self.velocityY;
// Keep player within screen bounds horizontally
- if (self.x < 40) {
- self.x = 40;
+ if (self.x < 60) {
+ self.x = 60;
}
- if (self.x > 2008) {
- self.x = 2008;
+ if (self.x > 1988) {
+ self.x = 1988;
}
// Reset onGround flag
self.onGround = false;
};
@@ -181,11 +181,11 @@
jumpLabel.anchor.set(0.5, 0.5);
jumpButton.addChild(jumpLabel);
function checkCollisions() {
var playerBottom = player.y;
- var playerTop = player.y - 80;
- var playerLeft = player.x - 40;
- var playerRight = player.x + 40;
+ var playerTop = player.y - 120;
+ var playerLeft = player.x - 60;
+ var playerRight = player.x + 60;
// Check ground collision
if (playerBottom >= ground.y - 50) {
if (player.velocityY > 0) {
player.y = ground.y - 50;
Poder de saltó. In-Game asset. 2d. High contrast. No shadows
Slow fall. In-Game asset. 2d. High contrast. No shadows
Paracaídas. In-Game asset. 2d. High contrast. No shadows
Flecha hacia la derecha. In-Game asset. 2d. High contrast. No shadows
Botas de super salto. In-Game asset. 2d. High contrast. No shadows
Cubo de slime con cara feliz. In-Game asset. 2d. High contrast. No shadows