/**** * Classes ****/ // Bullet class var Bullet = Container.expand(function () { var self = Container.call(this); var bulletGraphics = self.attachAsset('bullet', { anchorX: 0.5, anchorY: 0.5 }); self.speed = -10; self.update = function () { self.y += self.speed; // Check if the bullet is off-screen and needs to be removed if (self.y < -self.height) { self.destroy(); } }; }); // Explosion class var Explosion = Container.expand(function () { var self = Container.call(this); var explosionGraphics = self.attachAsset('explosion', { anchorX: 0.5, anchorY: 0.5 }); self.update = function () { // Create fragments for (var i = 0; i < 10; i++) { var fragment = new Fragment(); fragment.x = self.x; fragment.y = self.y; game.addChild(fragment); } // Destroy the explosion self.destroy(); }; }); // Fragment class var Fragment = Container.expand(function () { var self = Container.call(this); var fragmentGraphics = self.attachAsset('fragment', { anchorX: 0.5, anchorY: 0.5 }); self.speedX = (Math.random() - 0.5) * 10; self.speedY = (Math.random() - 0.5) * 10; self.gravity = 0.5; self.update = function () { self.x += self.speedX; self.y += self.speedY; self.speedY += self.gravity; if (self.y > 2732 + self.height) { self.destroy(); } }; }); // Assets will be automatically created and loaded by the LK engine based on usage in the game code. // Hero class var Hero = Container.expand(function () { var self = Container.call(this); var heroGraphics = self.attachAsset('hero', { anchorX: 0.5, anchorY: 0.5 }); self.update = function () { // Hero update logic, such as movement, can be added here. // Add scaling effect along the x-axis self.scale.x = 1 + Math.sin(LK.ticks / 10) * 0.1; }; }); // Obstacle class var Obstacle = Container.expand(function () { var self = Container.call(this); var obstacleGraphics = self.attachAsset('obstacle', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 5; self.update = function () { self.y += self.speed; self.rotation += 0.01; // Check if the obstacle is off-screen and needs to be removed if (self.y > 2732 + self.height) { self.destroy(); } }; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 // Initialize game with a black background }); /**** * Game Code ****/ var background = game.addChild(LK.getAsset('background', { anchorX: 0, anchorY: 0 })); var hero; var obstacles = []; var bullets = []; var score = 0; var scoreTxt; function spawnObstacle() { var obstacle = new Obstacle(); obstacle.x = Math.random() * (2048 - obstacle.width) + obstacle.width / 2; obstacle.y = -obstacle.height / 2; obstacles.push(obstacle); game.addChild(obstacle); } function fireBullet() { var bullet = new Bullet(); bullet.x = hero.x; bullet.y = hero.y - hero.height / 2 - bullet.height / 2; bullets.push(bullet); game.addChild(bullet); } function checkCollisions() { bullets.forEach(function (bullet, bulletIndex) { obstacles.forEach(function (obstacle, obstacleIndex) { if (bullet.intersects(obstacle)) { bullet.destroy(); obstacle.destroy(); // Create an explosion at the location of the destroyed obstacle var explosion = new Explosion(); explosion.x = obstacle.x; explosion.y = obstacle.y; game.addChild(explosion); bullets.splice(bulletIndex, 1); obstacles.splice(obstacleIndex, 1); score += 10; scoreTxt.setText("Score: " + score); } }); }); } // Initialize hero hero = new Hero(); hero.x = 1024; // Center horizontally hero.y = 2732 - 200; // Position from the bottom game.addChild(hero); // Initialize score display scoreTxt = new Text2("Score: 0", { size: 100, fill: "#ffffff" }); LK.gui.top.addChild(scoreTxt); // Game update function game.update = function () { if (LK.ticks % 120 == 0) { // Spawn an obstacle every 2 seconds spawnObstacle(); } if (LK.ticks % 30 == 0) { // Fire a bullet every 0.5 seconds fireBullet(); } checkCollisions(); }; // Touch event to move the hero game.down = function (x, y, obj) { var gamePos = game.toLocal(obj.global); hero.x = gamePos.x; }; game.move = function (x, y, obj) { var gamePos = game.toLocal(obj.global); hero.x = gamePos.x; };
===================================================================
--- original.js
+++ change.js
@@ -64,8 +64,10 @@
anchorY: 0.5
});
self.update = function () {
// Hero update logic, such as movement, can be added here.
+ // Add scaling effect along the x-axis
+ self.scale.x = 1 + Math.sin(LK.ticks / 10) * 0.1;
};
});
// Obstacle class
var Obstacle = Container.expand(function () {