User prompt
The costumes should be on the character in the same way as they are on the selection screen, there should be no difference after the game starts
User prompt
The costumes should look like they are stuck to the character.
User prompt
Remove the selected costumes from the middle of the screen after the game starts so that they are only on the character you are playing.
User prompt
When the game starts, the selected costumes should be on the characters. Forget the previously prepared costumes. We will use these new costumes.
User prompt
costumes always move in integration with the characters (including the selection screen)
User prompt
Show the costumes we wear on the character selection screen
User prompt
Let's add it to the costume assets as in the example you said.
User prompt
a little further down
User prompt
just a little bit down
User prompt
Kostümler daha düzenli görünmeli ki hepsini ekranda görebilelim.
User prompt
Think like a jumping human head instead of a jumping bird and design your costumes accordingly.
User prompt
"Touch the screen to jump" text should not be on the selection screen, it should be there softly when the game starts after selecting the character
User prompt
have a crown instead of a hat and all costumes make the same movements as the character (including bending)
User prompt
Add a costume section so that when we click on it, we can dress the character in costumes
User prompt
Put the speed option in a small way on the top right of the screen and adjust the speed from there
User prompt
Put the speed option in a small way on the top right of the screen and adjust the speed from there, it will disappear when the game starts
User prompt
Put the speed adjustment in a small way on the top right of the screen
User prompt
The game should speed up over time and this should be a feature that can be adjusted on the selection screen.
User prompt
Make the text "Zıplamak için Ekrana Dokunn" a little smaller
User prompt
change tap to flap hold to float text to"Zıplamak için Ekrana Dokunn"
User prompt
Make that sound immediately after selecting the character
User prompt
Play sound after selecting characters on selection screen
User prompt
When you tap on the characters on the selection screen, they will grow a little bigger. ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
The characters on the selection screen should move a little up and a little down slowly. ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
add "starsound" sound to selection screen
/**** * Plugins ****/ var storage = LK.import("@upit/storage.v1"); var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ var Bird = Container.expand(function (birdType) { var self = Container.call(this); // Default to 'bird' if not specified var assetId = birdType === 'bird2' ? 'bird2' : 'bird'; var birdGraphics = self.attachAsset(assetId, { anchorX: 0.5, anchorY: 0.5 }); self.xSpeed = 10.9375; self.ySpeed = -20; self.gravity = 1; self.lift = -15; self.flap = function () { self.ySpeed = self.lift * 1.5; LK.getSound('flap').play(); }; self._update_migrated = function () { if (game.isMouseDown) { self.ySpeed += self.gravity / 3; } else { self.ySpeed += self.gravity; } self.y += self.ySpeed; self.x += self.xSpeed; if (self.y <= 0 || self.y >= 2732) { self.speed = -self.speed; } var targetRotation = Math.atan2(self.ySpeed, self.xSpeed * self.scale.x) / 2; birdGraphics.rotation += (targetRotation - birdGraphics.rotation) / 10; }; self.flip = function () { self.scale.x *= -1; }; }); var Obstacle = Container.expand(function () { var self = Container.call(this); var obstacleShadow = self.attachAsset('obstacleShadow', { anchorX: 0.5, anchorY: 0.5 }); obstacleShadow.rotation = Math.PI / 4; var obstacleShadow2 = self.attachAsset('obstacleShadow2', { anchorX: 0.5, anchorY: 0.5 }); obstacleShadow2.rotation = Math.PI / 4; obstacleShadow2.y = -7; var obstacleGraphics = self.attachAsset('obstacle', { anchorX: 0.5, anchorY: 0.5 }); obstacleGraphics.rotation = Math.PI / 4; self.speed = 5; self._move_migrated = function (speed) { self.y += speed; }; }); var Wall = Container.expand(function () { var self = Container.call(this); var wallGraphics = self.attachAsset('wall', { anchorX: 0.5, anchorY: 0.5 }); }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x000000 }); /**** * Game Code ****/ var tutorialTextWhite = new Text2('Tap to Flap\nHold to Float', { size: 150, fill: '#ffb6e6', //{B} // light pink font: 'Impact', align: 'center' }); tutorialTextWhite.anchor.set(.5, 1); tutorialTextWhite.x = -4; tutorialTextWhite.y = -62; LK.gui.bottom.addChild(tutorialTextWhite); var tutorialText = new Text2('Tap to Flap\nHold to Float', { size: 150, fill: '#e75480', //{G} // vivid pink font: 'Impact', dropShadow: true, dropShadowColor: '#ffb6e6', //{J} // light pink shadow dropShadowBlur: 5, dropShadowDistance: 7, dropShadowAngle: 0, align: 'center' }); tutorialText.anchor.set(.5, 1); tutorialText.y = -50; LK.gui.bottom.addChild(tutorialText); game.score = 0; game.obstacleSpeed = 5; game.obstacleSpeedIncrease = 0.005; game.checkObstacleCollision = function (obstacles) { for (var i = 0; i < obstacles.length; i++) { obstacles[i]._move_migrated(); var dist = Math.sqrt(Math.pow(bird.x - obstacles[i].x, 2) + Math.pow(bird.y - obstacles[i].y, 2)); if (dist < 280) { LK.setScore(game.score); LK.getSound('gameOverJingle').play(); LK.effects.flashScreen(0xff0000, 600); LK.setTimeout(function () { LK.showGameOver(); }, 2700); //{W} // Set to 2.7 seconds return; } } }; game.setBackgroundColor(0xffe0f0); // very light pink background var record = typeof storage.record === 'number' ? storage.record : 0; var scoreText = new Text2('0', { size: 150, fill: '#e75480', //{V} // vivid pink font: 'Impact', dropShadow: true, dropShadowColor: '#ffb6e6', //{Y} // light pink shadow dropShadowBlur: 5, dropShadowDistance: 7, dropShadowAngle: 0 }); scoreText.anchor.set(.5, 0); LK.gui.top.addChild(scoreText); var scoreText2 = new Text2('0', { size: 150, fill: '#ffb6e6', //{14} // light pink font: 'Impact' }); scoreText2.anchor.set(.5, 0); scoreText2.x = -4; scoreText2.y = -5; LK.gui.top.addChild(scoreText2); // Record (high score) text var recordText = new Text2('REKOR: ' + record, { size: 80, fill: '#e75480', font: 'Impact', dropShadow: true, dropShadowColor: '#ffb6e6', dropShadowBlur: 5, dropShadowDistance: 7, dropShadowAngle: 0 }); recordText.anchor.set(0.5, 0); recordText.y = 140; LK.gui.top.addChild(recordText); LK.gui.top.addChild(scoreText); // Character select state var characterSelected = false; var selectedBirdType = null; var bird = null; // Create character select UI var selectText = new Text2('Hangimizle oynamak istersin', { size: 80, fill: '#e75480', //{17} // vivid pink font: 'Impact', align: 'center' }); selectText.anchor.set(0.5, 1); selectText.x = 0; selectText.y = -200; LK.gui.center.addChild(selectText); var bird1Preview = LK.getAsset('bird', { anchorX: 0.5, anchorY: 0.5 }); bird1Preview.x = -200; bird1Preview.y = 200; bird1Preview.scaleX = 2; bird1Preview.scaleY = 2; LK.gui.center.addChild(bird1Preview); // Animate bird1Preview up and down function animateBird1PreviewDown() { tween(bird1Preview, { y: 240 }, { duration: 1200, easing: tween.sineInOut, onFinish: animateBird1PreviewUp }); } function animateBird1PreviewUp() { tween(bird1Preview, { y: 160 }, { duration: 1200, easing: tween.sineInOut, onFinish: animateBird1PreviewDown }); } animateBird1PreviewDown(); var bird2Preview = LK.getAsset('bird2', { anchorX: 0.5, anchorY: 0.5 }); bird2Preview.x = 200; bird2Preview.y = 200; bird2Preview.scaleX = 2; bird2Preview.scaleY = 2; LK.gui.center.addChild(bird2Preview); // Animate bird2Preview up and down function animateBird2PreviewDown() { tween(bird2Preview, { y: 240 }, { duration: 1200, easing: tween.sineInOut, onFinish: animateBird2PreviewUp }); } function animateBird2PreviewUp() { tween(bird2Preview, { y: 160 }, { duration: 1200, easing: tween.sineInOut, onFinish: animateBird2PreviewDown }); } animateBird2PreviewUp(); // Add touch/click handlers for selection bird1Preview.interactive = true; bird2Preview.interactive = true; bird1Preview.down = function (x, y, obj) { if (!characterSelected) { // Animate scale up, then back to normal tween(bird1Preview, { scaleX: 2.4, scaleY: 2.4 }, { duration: 120, easing: tween.sineInOut, onFinish: function onFinish() { tween(bird1Preview, { scaleX: 2, scaleY: 2 }, { duration: 120, easing: tween.sineInOut, onFinish: function onFinish() { selectedBirdType = 'bird'; startGameWithSelectedBird(); } }); } }); } }; bird2Preview.down = function (x, y, obj) { if (!characterSelected) { // Animate scale up, then back to normal tween(bird2Preview, { scaleX: 2.4, scaleY: 2.4 }, { duration: 120, easing: tween.sineInOut, onFinish: function onFinish() { tween(bird2Preview, { scaleX: 2, scaleY: 2 }, { duration: 120, easing: tween.sineInOut, onFinish: function onFinish() { selectedBirdType = 'bird2'; startGameWithSelectedBird(); } }); } }); } }; function startGameWithSelectedBird() { characterSelected = true; // Remove selection UI LK.gui.center.removeChild(selectText); LK.gui.center.removeChild(bird1Preview); LK.gui.center.removeChild(bird2Preview); // Play a sound after selecting a character LK.getSound('startsound').play(); // Add the selected bird to the game bird = game.addChild(new Bird(selectedBirdType)); bird.x = 1024; bird.y = 1366; // Continue with the rest of the game setup leftWall = game.addChild(new Wall()); leftWall.x = 0; leftWall.y = 1366; rightWall = game.addChild(new Wall()); rightWall.x = 2048; rightWall.y = 1366; leftObstacles = []; rightObstacles = []; obstacleSpawnRandomness = 120; obstacleSpawnRandomnessDecrease = 0.025 * (2 / 3); obstacleSpawnY = -500; leftObstacleSpawnTime = Math.floor(Math.random() * obstacleSpawnRandomness) + obstacleSpawnRandomness; rightObstacleSpawnTime = Math.floor(Math.random() * obstacleSpawnRandomness) + obstacleSpawnRandomness; game.isMouseDown = false; } // Only allow input after character is selected game.down = function (x, y, obj) { if (characterSelected && bird) { bird.flap(); game.isMouseDown = true; } }; game.up = function (x, y, obj) { if (characterSelected) { game.isMouseDown = false; } }; game.update = function () { if (!characterSelected || !bird) { // Don't run gameplay logic until a bird is selected return; } bird._update_migrated(); if (game.score > 2) { tutorialText.y += 5; tutorialTextWhite.y += 5; } scoreText.setText(game.score); scoreText2.setText(game.score); // Update record if needed if (game.score > record) { record = game.score; storage.record = record; recordText.setText('REKOR: ' + record); } game.obstacleSpeed += game.obstacleSpeedIncrease; obstacleSpawnRandomness -= obstacleSpawnRandomnessDecrease; if (obstacleSpawnRandomness < 20) { obstacleSpawnRandomness = 20; } if (LK.ticks >= leftObstacleSpawnTime) { var newObstacle = game.addChildAt(new Obstacle(), 0); newObstacle.x = 0; newObstacle.y = obstacleSpawnY; leftObstacles.push(newObstacle); leftObstacleSpawnTime += Math.floor(Math.random() * obstacleSpawnRandomness) + obstacleSpawnRandomness; } if (LK.ticks >= rightObstacleSpawnTime) { var newObstacle = game.addChildAt(new Obstacle(), 0); newObstacle.x = 2048; newObstacle.y = -newObstacle.height; rightObstacles.push(newObstacle); rightObstacleSpawnTime += Math.floor(Math.random() * obstacleSpawnRandomness) + obstacleSpawnRandomness; } if (bird.intersects(leftWall) && bird.xSpeed < 0 || bird.intersects(rightWall) && bird.xSpeed > 0) { bird.xSpeed = -bird.xSpeed; bird.flip(); game.score++; LK.setScore(game.score); LK.getSound('bounce').play(); } for (var i = leftObstacles.length - 1; i >= 0; i--) { leftObstacles[i]._move_migrated(game.obstacleSpeed); if (leftObstacles[i].y > 3232) { leftObstacles[i].destroy(); leftObstacles.splice(i, 1); } } for (var i = rightObstacles.length - 1; i >= 0; i--) { rightObstacles[i]._move_migrated(game.obstacleSpeed); if (rightObstacles[i].y > 3232) { rightObstacles[i].destroy(); rightObstacles.splice(i, 1); } } game.checkObstacleCollision(leftObstacles); game.checkObstacleCollision(rightObstacles); if (bird.y < 0 || bird.y > 2732) { LK.setScore(game.score); LK.getSound('gameOverJingle').play(); LK.effects.flashScreen(0xff0000, 600); LK.setTimeout(function () { LK.showGameOver(); }, 2700); //{28} // Set to 2.7 seconds return; } };
===================================================================
--- original.js
+++ change.js
@@ -300,8 +300,10 @@
// Remove selection UI
LK.gui.center.removeChild(selectText);
LK.gui.center.removeChild(bird1Preview);
LK.gui.center.removeChild(bird2Preview);
+ // Play a sound after selecting a character
+ LK.getSound('startsound').play();
// Add the selected bird to the game
bird = game.addChild(new Bird(selectedBirdType));
bird.x = 1024;
bird.y = 1366;
Dusty pink wall with hearts inside . No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat Let the hearts be hearts of vibrant colors and various pink emojis and let the wall be square
powder pink square. In-Game asset. 2d. High contrast. No shadows
pixel sun glasses . No background. Transparent background. Blank background. No shadows. 2d. In-Game asset. flat
brown beard. In-Game asset. 2d. High contrast. No shadows
king crown. In-Game asset. 2d. High contrast. No shadows
bıyık. In-Game asset. 2d. High contrast. No shadows
gri tonlarında şapka. In-Game asset. 2d. High contrast. No shadows
red rose realistic. In-Game asset. 2d. High contrast. No shadows
Daisy Bouquet Realistic. In-Game asset. 2d. High contrast. No shadows
pink flower bouquet realistic. In-Game asset. 2d. High contrast. No shadows