User prompt
Сделать проверку на столкновения объекта character и prep
User prompt
Сделать проверку на столкновения объекта character и prep
User prompt
Сделать проверку на столкновение объекта character и prepimages
User prompt
Please fix the bug: 'undefined is not an object (evaluating 'player.lastWasIntersecting = false')' in or related to this line: 'player.lastWasIntersecting = false; // Initialize lastWasIntersecting for player' Line Number: 533
User prompt
Ты можешь пройтись по всем этим рекомендациям и сделать это: To detect a collision between two images in the LK game engine, you need to check for intersections between the two objects. Here's a general approach to achieve this: 1. **Initialize Tracking Variables**: Ensure that each object you want to check for collisions has a `lastWasIntersecting` property initialized to `false`. This helps in determining the exact moment when a collision occurs. 2. **Update Method**: Within the `game.update` function, iterate over the objects you want to check for collisions. 3. **Intersection Check**: Use the `intersects` method provided by the LK engine to check if two objects are colliding. This method returns `true` if the objects intersect. 4. **Collision Detection Logic**: Implement logic to detect the exact frame when a collision occurs by comparing the current intersection state with the previous state (`lastWasIntersecting`). If `lastWasIntersecting` is `false` and `intersects` returns `true`, a collision has just occurred. 5. **Update Tracking Variables**: After checking for collisions, update the `lastWasIntersecting` property to the current intersection state for the next frame. Here's a simplified example of how this logic might look in code: ```javascript game.update = function () { // Iterate over objects to check for collisions if (object1.lastWasIntersecting === false && object1.intersects(object2)) { // Collision just occurred console.log("Collision detected!"); } // Update last intersection state object1.lastWasIntersecting = object1.intersects(object2); }; ``` By following these steps, you can accurately detect collisions between images in your game.
User prompt
Ничего не изменилось
User prompt
Не исправил
User prompt
Не помогло
User prompt
Исправить ошибку, когда игрок пересекает prep или prepf то игра не завершается
User prompt
Не работает пересечение!!! Помести код в нужные места, чтобы это заработало
User prompt
Сделай такое по твоему примеру из описания
User prompt
Сделай такое в моем коде
User prompt
Не работает. Столкновения не происходит
User prompt
Не работает. Столкновения не происходит
User prompt
Добавить проверку на пересечение
User prompt
Если игрок в радиусе изображения пересекся с prep и prepf, то game over
User prompt
Исправить ошибку, когда при столкновении монетки и игрока, монетка не исчезает
User prompt
Добавить события столкновения игрока с монеткой
User prompt
Можешь пройтись по всем этим пунктам и попробовать устранить проблему?
User prompt
При пересечении character и монетка, справа от монетка баттон выдавать счетчик таких монет
Code edit (1 edits merged)
Please save this source code
Code edit (3 edits merged)
Please save this source code
User prompt
Добавить изображение monetka_ikonka по аналогии с ikonka , только ниже
User prompt
Монетка не исчезает при пересечении
User prompt
Исправить ошибку, когда при пересечении изображений character и monetka, монетка не исчезает
/****
* Plugins
****/
var tween = LK.import("@upit/tween.v1");
/****
* Classes
****/
// test
var ButtonBot = Container.expand(function () {
var self = Container.call(this);
var buttonBotGraphics = self.attachAsset('BUTTON_BOT', {
anchorX: 0.5,
anchorY: 0.5
});
// Add down event to set landing duration to 100 during jump or double jump
self.down = function (x, y, obj) {
if (self.isPressed) {
return;
} // Debounce: Ignore if already pressed
self.isPressed = true; // Set pressed state
LK.setTimeout(function () {
self.isPressed = false; // Reset pressed state after a short delay
}, 200); // 200ms debounce delay
self.scale.set(0.9); // Add press effect by scaling down
if (!player.inAir && !player.doubleJump) {
player.rotation -= Math.PI / 2.25; // Rotate 80 degrees counter-clockwise
} else if (player.inAir || player.doubleJump) {
tween(player, {
y: 2732 / 2 - 250
}, {
duration: 100,
onFinish: function onFinish() {
player.inAir = false;
player.doubleJump = false;
player.y = 2732 / 2 - 250;
}
});
}
if (player.inAir || player.doubleJump) {
if (!player.hasRotated) {
player.rotation -= Math.PI / 2.25; // Rotate 80 degrees counter-clockwise
player.hasRotated = true; // Ensure rotation only occurs once
}
tween(player, {
y: 2732 / 2 - 250
}, {
duration: 100,
onFinish: function onFinish() {
player.inAir = false;
player.doubleJump = false;
player.y = 2732 / 2 - 250;
player.hasRotated = false; // Reset rotation flag
}
});
} else {
player.hasRotated = false; // Reset rotation flag if not in air or double jump
}
};
// Add up event to reset rotation
self.up = function (x, y, obj) {
self.isPressed = false; // Reset pressed state
self.scale.set(1); // Reset scale to original size
if (!player.inAir && !player.doubleJump) {
player.rotation += Math.PI / 2.25; // Rotate back 80 degrees clockwise
} else if (player.inAir || player.doubleJump) {
player.rotation += Math.PI / 2.25; // Rotate back 80 degrees clockwise
}
};
});
// Create a button top class
var ButtonTop = Container.expand(function () {
var self = Container.call(this);
var buttonTopGraphics = self.attachAsset('BUTTON_TOP', {
anchorX: 0.5,
anchorY: 0.5
});
// Add down event to trigger jump
self.down = function (x, y, obj) {
if (self.isPressed) {
return;
} // Debounce: Ignore if already pressed
self.isPressed = true; // Set pressed state
LK.setTimeout(function () {
self.isPressed = false; // Reset pressed state after a short delay
}, 200); // 200ms debounce delay
self.scale.set(0.9); // Add press effect by scaling down
if (!player.doubleJump || player.inAir && !player.doubleJump) {
if (player.inAir) {
player.doubleJump = true;
tween(player, {
y: player.y - 400,
rotation: player.rotation - Math.PI * 2
}, {
duration: 230,
easing: tween.easeInOut,
onFinish: function onFinish() {
player.inAir = true; // Allow another jump
tween(player, {
y: 2732 / 2 - 250
}, {
duration: 800,
onFinish: function onFinish() {
player.inAir = false;
player.doubleJump = false;
player.y = 2732 / 2 - 250;
}
});
}
});
return;
}
player.inAir = true;
player.doubleJump = false;
player.lastY = player.y; // Update lastY immediately after jump initiation
player.lastX = player.x; // Update lastX immediately after jump initiation
player.lastY = player.y; // Update lastY immediately after jump initiation
player.lastX = player.x; // Update lastX immediately after jump initiation
tween(player, {
y: player.y - 400
}, {
duration: 100,
// Reduced duration to allow quicker second jump
onFinish: function onFinish() {
player.inAir = true; // Allow another jump
tween(player, {
y: 2732 / 2 - 250
}, {
duration: 800,
onFinish: function onFinish() {
player.inAir = false;
}
});
}
});
}
};
// Add up event to reset scale
self.up = function (x, y, obj) {
self.isPressed = false; // Reset pressed state
self.scale.set(1); // Reset scale to original size
};
});
// Create a player class
var Player = Container.expand(function () {
var self = Container.call(this);
var playerGraphics = self.attachAsset('character', {
anchorX: 0.5,
anchorY: 0.5
});
// Initialize the inAir flag
self.inAir = false;
self.doubleJump = false;
self.hasRotated = false; // Initialize rotation flag
// Initialize lastY and lastX for tracking changes
self.lastY = self.y;
self.lastX = self.x;
});
/****
* Initialize Game
****/
// Add player to the game
var game = new LK.Game({
backgroundColor: 0x12243b
});
/****
* Game Code
****/
// Function to create Monetka image at a random height
function createMonetka() {
var monetka = game.addChild(LK.getAsset('Monetka', {
anchorX: 0.5,
anchorY: 0.5
}));
monetka.x = 2057; // Center image horizontally
monetka.y = Math.floor(Math.random() * (1650 - 1300 + 1)) + 1300; // Random height between 300 and 1000
monetka.rotation = Math.PI / 9; // Rotate image by 20 degrees clockwise
var scaleDirection = 1; // 1 for increasing, -1 for decreasing
var scaleSpeed = 0.01; // Speed of scaling
monetka.update = function () {
// Update the scale
monetka.scale.x += scaleSpeed * scaleDirection;
monetka.scale.y += scaleSpeed * scaleDirection;
// Check if we need to change direction
if (monetka.scale.x >= 1.2) {
scaleDirection = -1; // Start decreasing
} else if (monetka.scale.x <= 1) {
scaleDirection = 1; // Start increasing
}
};
}
// Create Monetka every 3 seconds
var monetkaTimer = LK.setInterval(createMonetka, 3000);
// Add ikonka button to the GUI overlay layer to make it static
var ikonkaButton = LK.gui.topRight.addChild(LK.getAsset('ikonka', {
anchorX: 0.5,
anchorY: 0.5,
x: -100,
// Move 100 pixels to the left
y: 120 // Move 100 pixels down
}));
// Create and display score text at the top center of the screen
var scoreText = new Text2(LK.getScore().toString(), {
size: 130,
fill: 0xFFFFFF,
fontWeight: 'bold',
font: 'Arial' // Specify the desired font here
});
scoreText.anchor.set(0.5, 0); // Center horizontally, top edge
scoreText.y = 30; // Move score 50 pixels down
LK.gui.top.addChild(scoreText);
ikonkaButton.interactive = true; // Make ikonka interactive
ikonkaButton.down = function (x, y, obj) {
if (ikonkaButton.isPressed) {
return; // Debounce: Ignore if already pressed
}
ikonkaButton.isPressed = true; // Set pressed state
LK.setTimeout(function () {
ikonkaButton.isPressed = false; // Reset pressed state after a short delay
}, 200); // 200ms debounce delay
// Toggle transparency on button press
if (ikonkaButton.alpha === 1) {
ikonkaButton.alpha = 0.5; // Set transparency to 50%
buttonTop.x -= 1700; // Move buttonTop 100 pixels to the left
buttonBot.x -= 1700; // Move buttonBot 100 pixels to the left
} else {
ikonkaButton.alpha = 1; // Reset transparency
buttonTop.x += 1700; // Move buttonTop back to original position
buttonBot.x += 1700; // Move buttonBot back to original position
}
ikonkaButton.isPressed = false; // Reset pressed state
};
var oblako = game.addChild(LK.getAsset('Oblako', {
anchorX: 0.5,
anchorY: 0.5
}));
oblako.x = 2248; // Position 'Oblako' in the middle of the right side of the screen
oblako.y = Math.floor(Math.random() * (901 - 400)) + 400; // Random height between 200 and 700
oblako.rotation = Math.PI / 9; // Rotate 'Oblako' by 20 degrees clockwise
oblako.alpha = 0.3; // Set transparency to 50%
var otherImageSpeed = 20; // Initial speed for other images
var speedIncreaseTimer = LK.setInterval(function () {
otherImageSpeed += 0.2; // Increase speed by 1 every 5 seconds
}, 7000);
var oblakoInstances = []; // Array to track oblako instances
var oblakoTimer = LK.setInterval(function () {
var newOblako = game.addChild(LK.getAsset('Oblako', {
anchorX: 0.5,
anchorY: 0.5
}));
var scaleFactor = Math.random() * (1 - 0.33) + 0.33; // Random scale factor between 0.33 and 1
newOblako.scale.set(scaleFactor); // Apply random scale
newOblako.x = 2248; // Position 'Oblako' in the middle of the right side of the screen
newOblako.y = Math.floor(Math.random() * (901 - 400)) + 400; // Random height between 200 and 700
newOblako.rotation = Math.PI / 9; // Rotate 'Oblako' by 20 degrees clockwise
newOblako.alpha = 0.3; // Set transparency to 50%
oblakoInstances.push(newOblako); // Add new oblako to the array
}, 18000);
// Create an array to store 'Dom' images
// Define BLEND_MODES to fix the undefined variable error
var BLEND_MODES = {
NORMAL: 0
};
var domImages = [];
// Create the first 'Dom' image after 2 seconds
LK.setTimeout(function () {
var newDom = game.addChild(LK.getAsset('Dom', {
anchorX: 0.5,
anchorY: 0.5
}));
newDom.x = 2048 / 2 + 2170; // Center image horizontally
newDom.y = 2732 / 2 + 450; // Center image vertically
newDom.rotation = Math.PI / 9; // Rotate image by 20 degrees clockwise
newDom.alpha = 0.2; // Set transparency to 20%
newDom.blendMode = BLEND_MODES.NORMAL; // Ensure transparency does not sum up
domImages.push(newDom);
// Create subsequent 'Dom' images every 3 seconds
var domTimer = LK.setInterval(function () {
var newDom = game.addChild(LK.getAsset('Dom', {
anchorX: 0.5,
anchorY: 0.5
}));
newDom.x = 2048 / 2 + 2170; // Center image horizontally
newDom.y = 2732 / 2 + 450; // Center image vertically
newDom.rotation = Math.PI / 9; // Rotate image by 20 degrees clockwise
newDom.alpha = 0.2; // Set transparency to 20%
newDom.blendMode = BLEND_MODES.NORMAL; // Ensure transparency does not sum up
domImages.push(newDom);
}, 12500);
}, 2220);
// Set a random interval between 4 to 8 seconds to create SUNDUK
function randomSundukCreation() {
var randomTime = Math.floor(Math.random() * (10000 - 4000 + 1)) + 4000;
LK.setTimeout(function () {
createSunduk();
randomSundukCreation(); // Call again for continuous random creation
}, randomTime);
}
// Start the random SUNDUK creation
randomSundukCreation();
// Function to create SUNDUK image
function createSunduk() {
var sunduk = game.addChild(LK.getAsset('Sunduk', {
anchorX: 0.5,
anchorY: 0.5
}));
sunduk.x = 2090; // Center image horizontally
sunduk.y = Math.floor(Math.random() * (2732 - 2332 + 1)) + 2332; // Random height between 2332 and 2732
sunduk.rotation = Math.PI / 9; // Rotate image by 20 degrees clockwise
sunduk.alpha = 0.5; // Set transparency to 50%
}
// Function to create UFO image
function createUfo() {
var ufo = game.addChild(LK.getAsset('Ufo', {
anchorX: 0.5,
anchorY: 0.5
}));
ufo.x = 2090; // Center image horizontally
ufo.y = Math.floor(Math.random() * (2732 - 2332 + 1)) + 2332; // Random height between 2332 and 2732
ufo.rotation = Math.PI / 9; // Rotate image by 20 degrees clockwise
ufo.alpha = 0.5; // Set transparency to 50%
}
// Create a new image 123 every 3 seconds on the right side of the screen
var image123Timer = LK.setInterval(function () {
var newImage123 = game.addChild(LK.getAsset('123', {
anchorX: 0.5,
anchorY: 0.5
}));
newImage123.x = 2048 + newImage123.width / 2; // Position on the right side of the screen
newImage123.y = 2732 / 2 + 1290; // Move image down by 600 pixels
newImage123.rotation = Math.PI / 9; // Rotate image by 20 degrees clockwise
}, 1400);
LK.setTimeout(function () {
vzriv = game.addChild(LK.getAsset('Vzriv', {
anchorX: 0.5,
anchorY: 0.5
}));
vzriv.x = vzriv.width / 2 + 90; // Position Vzriv at the left center of the screen
vzriv.y = 2732 / 2 - 280; // Center Vzriv vertically
game.setChildIndex(player, game.children.length - 1); // Move player to the top
game.setChildIndex(buttonBot, game.children.length - 1); // Ensure buttonBot is on top
game.setChildIndex(buttonTop, game.children.length - 1); // Ensure buttonTop is on top
// Remove Vzriv 2.1 seconds after the game starts
LK.setTimeout(function () {
vzriv.destroy();
}, 2100);
}, 1860);
// Add image 123 to the center of the screen
var image123 = game.addChild(LK.getAsset('123', {
anchorX: 0.5,
anchorY: 0.5
}));
image123.x = 2048 / 2; // Center image horizontally
image123.y = 2732 / 2 + 280; // Move image 123 down by 280 pixels
image123.rotation = Math.PI / 9; // Rotate image 123 by 20 degrees clockwise
// Function to randomly display one of the Prep images, PrepF1, or PrepF2 every 5 seconds
var prepImages = ['Prep1', 'Prep2', 'Prep3', 'Prep4', 'Prep5', 'Prep6'];
var prepFImages = ['PrepF1', 'PrepF2', 'Prepf3'];
var prepInterval = 2500;
var prepCounter = 0; // Counter to track the number of images displayed
var prepRandomTimer = LK.setInterval(function () {
var allImages;
if (prepCounter < 5) {
allImages = prepImages; // First 5 images are always from prepImages
} else {
allImages = Math.random() < 0.5 ? prepImages : prepFImages;
}
var randomIndex = Math.floor(Math.random() * allImages.length);
var prep = game.addChild(LK.getAsset(allImages[randomIndex], {
anchorX: 0.5,
anchorY: 0.5
}));
if (prepFImages.includes(allImages[randomIndex])) {
// Set specific positions for PrepF1 and PrepF2
prep.x = 2048 + 100; // Original position for PrepF images
prep.y = 2732 / 2 + 105; // Original position for PrepF images
} else {
// Set positions for other Prep images
prep.x = 2048 + 100; // Center image horizontally
prep.y = 2732 / 2 + 430; // Center image vertically
}
prep.rotation = Math.PI / 9;
prepCounter++; // Increment the counter after each image is displayed
}, prepInterval);
var prepIntervalDecreaseTimer = LK.setInterval(function () {
prepInterval = Math.max(800, prepInterval - 200);
LK.clearInterval(prepRandomTimer);
prepRandomTimer = LK.setInterval(function () {
var allImages = Math.random() < 0.5 ? prepImages : prepFImages;
var randomIndex = Math.floor(Math.random() * allImages.length);
var prep = game.addChild(LK.getAsset(allImages[randomIndex], {
anchorX: 0.5,
anchorY: 0.5
}));
if (prepFImages.includes(allImages[randomIndex])) {
prep.x = 2048 + 100;
prep.y = 2732 / 2 + 105;
} else {
prep.x = 2048 + 100;
prep.y = 2732 / 2 + 430;
}
prep.rotation = Math.PI / 9;
}, prepInterval);
}, 5000);
// Add 'Dom' image to the center of the screen
var domImage = game.addChild(LK.getAsset('Dom', {
anchorX: 0.5,
anchorY: 0.5
}));
domImage.x = 2048 / 2 + 70; // Center image horizontally
domImage.y = 2732 / 2 - 305; // Center image vertically
domImage.rotation = Math.PI / 9; // Rotate image by 20 degrees clockwise
domImage.alpha = 0.2; // Set transparency to 50%
domImage.blendMode = BLEND_MODES.NORMAL; // Ensure transparency does not sum up
// Add a glow effect to the 'Dom' image
tween(domImage, {
alpha: 0.2
}, {
duration: 1000,
yoyo: true,
repeat: Infinity
});
// Add image 'niz' to the bottom of the screen
var niz = game.addChild(LK.getAsset('NIZ', {
anchorX: 0.5,
// Center horizontally
anchorY: 0.5 // Align to the bottom
}));
niz.x = 2048 / 2 - 150; // Center image horizontally
niz.y = 2732 - 200; // Position image at the bottom of the screen
niz.rotation = Math.PI / 9;
game.setChildIndex(niz, 0); // Move 'niz' to the back layer
// Function to create ALMAZ image
function createAlmaz() {
var almaz = game.addChild(LK.getAsset('almaz', {
anchorX: 0.5,
anchorY: 0.5
}));
almaz.x = 2090; // Center image horizontally
almaz.y = Math.floor(Math.random() * (2732 - 2332 + 1)) + 2332; // Random height between 2332 and 2732
almaz.rotation = Math.PI / 9; // Rotate image by 20 degrees clockwise
almaz.alpha = 0.7; // Set transparency to 70%
}
// Function to create SKELET image
function createSkelet() {
var skelet = game.addChild(LK.getAsset('Skelet', {
anchorX: 0.5,
anchorY: 0.5
}));
skelet.x = 2090; // Center image horizontally
skelet.y = Math.floor(Math.random() * (2732 - 2332 + 1)) + 2332; // Random height between 2332 and 2732
skelet.rotation = Math.PI / 9; // Rotate image by 20 degrees clockwise
skelet.alpha = 0.5; // Set transparency to 50%
}
// Set a random interval between 4 to 8 seconds to create ALMAZ
function randomAlmazCreation() {
var randomTime = Math.floor(Math.random() * (10000 - 4000 + 1)) + 4000;
LK.setTimeout(function () {
createAlmaz();
randomAlmazCreation(); // Call again for continuous random creation
}, randomTime);
}
// Start the random ALMAZ creation
randomAlmazCreation();
// Set a random interval between 4 to 8 seconds to create SKELET
function randomSkeletCreation() {
var randomTime = Math.floor(Math.random() * (10000 - 4000 + 1)) + 4000;
LK.setTimeout(function () {
createSkelet();
randomSkeletCreation(); // Call again for continuous random creation
}, randomTime);
}
// Start the random SKELET creation
randomSkeletCreation();
// Set a random interval between 4 to 8 seconds to create UFO
function randomUfoCreation() {
var randomTime = Math.floor(Math.random() * (10000 - 4000 + 1)) + 4000;
LK.setTimeout(function () {
createUfo();
randomUfoCreation(); // Call again for continuous random creation
}, randomTime);
}
// Start the random UFO creation
randomUfoCreation();
// Create 'niz' every 2 seconds, except for the first instance
var nizTimer = LK.setInterval(function () {
var newNiz = game.addChild(LK.getAsset('NIZ', {
anchorX: 0.5,
anchorY: 0.5
}));
newNiz.x = 2048 / 2 + 2000;
newNiz.y = 2732 + 580;
newNiz.rotation = Math.PI / 9;
game.setChildIndex(newNiz, 0);
}, 1400);
// Add player to the game
var ball = game.addChild(LK.getAsset('Ball', {
anchorX: 0.5,
anchorY: 0.5
}));
var uskorenie = game.addChild(LK.getAsset('Uskorenie', {
anchorX: 0.5,
anchorY: 0.5
}));
ball.x = ball.width / 2 - 100; // Shift ball 100 pixels to the left
ball.y = 2732 / 2 - 300; // Center ball vertically
LK.setTimeout(function () {
tween(ball, {
x: ball.x + 400
}, {
duration: 360,
// Reduced duration to double the speed
easing: tween.linear,
onFinish: function onFinish() {
ball.destroy(); // Remove the ball after it moves 200 pixels
}
});
}, 1500);
game.down = function (x, y, obj) {};
var player = game.addChild(new Player());
player.x = player.width / 2 + 200; // Position player 200 units to the right of the center left of the screen
player.y = 2732 / 2 - 250; // Move player 150 units down
player.rotation = Math.PI / 12; // Set initial rotation to 15 degrees clockwise
// Add background to the game
var background = game.addChild(LK.getAsset('background_1', {
anchorX: 0.5,
anchorY: 0.5
}));
game.setChildIndex(background, 0); // Move background to the bottom
background.x = 2048 / 2; // Center background horizontally
background.y = 2732 / 2 + 150; // Move background down by 550 pixels
background.rotation = Math.PI / 9; // Rotate background by 20 degrees clockwise
// Move background_1 towards its left side
var backgroundCounter = 0;
var backgroundTimer = LK.setInterval(function () {
var newBackground = game.addChild(LK.getAsset('background_1', {
anchorX: 0.5,
anchorY: 0.5
}));
newBackground.x = 2048 / 2 + 2500; // Move background 2048 pixels to the right
newBackground.y = 2732 / 2 + 1060; // Move background down by 1100 pixels
newBackground.rotation = Math.PI / 9; // Rotate background by 20 degrees clockwise
backgroundCounter++;
if (backgroundCounter === 1) {
LK.clearInterval(backgroundTimer);
backgroundTimer = LK.setInterval(function () {
var newBackground = game.addChild(LK.getAsset('background_1', {
anchorX: 0.5,
anchorY: 0.5
}));
newBackground.x = 2048 / 2 + 2500; // Move background 2048 pixels to the right
newBackground.y = 2732 / 2 + 1060; // Move background down by 1100 pixels
newBackground.rotation = Math.PI / 9; // Rotate background by 20 degrees clockwise
}, 1400);
} else if (backgroundCounter === 2) {
LK.clearInterval(backgroundTimer);
backgroundTimer = LK.setInterval(function () {
var newBackground = game.addChild(LK.getAsset('background_1', {
anchorX: 0.5,
anchorY: 0.5
}));
newBackground.x = 2048 / 2 + 2500; // Move background 2048 pixels to the right
newBackground.y = 2732 / 2 + 1060; // Move background down by 1100 pixels
newBackground.rotation = Math.PI / 9; // Rotate background by 20 degrees clockwise
}, 800);
}
}, 400);
var gameStarted = false;
var scoreIncrementTimer = LK.setInterval(function () {
if (gameStarted) {
LK.setScore(LK.getScore() + 1);
scoreText.setText(LK.getScore().toString());
}
}, 1500);
var gameStartTimer = LK.setTimeout(function () {
gameStarted = true;
}, 2000);
// Add BUTTON_TOP to the game
var buttonTop = game.addChild(new ButtonTop());
buttonTop.x = 2048 - buttonTop.width / 2 - 50; // Position buttonTop 50 units to the left of the right edge of the screen
buttonTop.y = 2732 - buttonTop.height / 2 - 350; // Position buttonTop 370 units above the bottom edge of the screen
// Add BUTTON_BOT to the game
var buttonBot = game.addChild(new ButtonBot());
buttonBot.x = 2048 - buttonBot.width / 2 - 50; // Position buttonBot 50 units to the left of the right edge of the screen
buttonBot.y = 2732 - buttonBot.height / 2 - 20; // Position buttonBot 20 units above the bottom edge of the screen
game.update = function () {
if (!gameStarted) {
buttonTop.interactive = false;
buttonBot.interactive = false;
return;
}
buttonTop.interactive = true;
buttonBot.interactive = true;
// Update lastY and lastX for player
player.lastY = player.y;
player.lastX = player.x;
game.children.forEach(function (child) {
if (child !== player && child !== buttonTop && child !== buttonBot && child !== uskorenie) {
// Check for intersection with Monetka
if (child.assetId === 'Monetka') {
if (child.lastWasIntersecting === undefined) {
child.lastWasIntersecting = false;
}
var currentIntersecting = player.intersects(child);
if (!child.lastWasIntersecting && currentIntersecting) {
child.destroy(); // Remove Monetka upon collision
}
child.lastWasIntersecting = currentIntersecting;
}
// Check for intersection with prep or prepf objects
if ((prepImages.includes(child.assetId) || prepFImages.includes(child.assetId)) && player.intersects(child)) {
LK.setScore(LK.getScore() + 1); // Increment score
scoreText.setText(LK.getScore().toString()); // Update score display
}
if (child === domImage) {
if (child.lastX === undefined) {
child.lastX = child.x;
}
if (child.lastY === undefined) {
child.lastY = child.y;
}
child.x -= 3 * Math.cos(child.rotation); // Set speed for domImage
child.y -= 3 * Math.sin(child.rotation); // Set speed for domImage
child.lastX = child.x;
child.lastY = child.y;
} else if (domImages.includes(child)) {
child.x -= 3 * Math.cos(child.rotation); // Set speed for newDom images
child.y -= 3 * Math.sin(child.rotation); // Set speed for newDom images
} else {
if (child === oblako || oblakoInstances.includes(child)) {
child.x -= 1 * Math.cos(child.rotation); // Set speed for 'Oblako'
child.y -= 1 * Math.sin(child.rotation); // Set speed for 'Oblako'
} else {
child.x -= otherImageSpeed * Math.cos(child.rotation); // Apply increased speed for other images
child.y -= otherImageSpeed * Math.sin(child.rotation); // Apply increased speed for other images
}
}
if (child.y + child.height / 2 < 0 || child.x - child.width / 2 > 2048 || child.y - child.height / 2 > 2732) {
// If the image is completely off the screen
child.destroy(); // Remove the image
}
}
game.setChildIndex(player, game.children.length - 1); // Move player to the top
game.setChildIndex(buttonBot, game.children.length - 1); // Ensure buttonBot is on top
game.setChildIndex(buttonTop, game.children.length - 1); // Ensure buttonTop is on top
});
// Add shaking effect to the player
if (gameStarted) {
if (LK.ticks < 130) {
// Strong shake for the first second (assuming 60 FPS)
player.x = player.lastX + Math.sin(LK.ticks / 0.5) * 10;
player.y = player.lastY + Math.cos(LK.ticks / 0.5) * 10;
} else {
player.x = player.lastX + Math.sin(LK.ticks / 0.5) * 3;
player.y = player.lastY + Math.cos(LK.ticks / 0.5) * 3;
}
if (vzriv && vzriv.parent) {
vzriv.destroy();
}
}
};
создать мультяшного сидячего персонажа. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
snowball. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
белая стрелочка вниз. Ровная. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Алмаз, мультяшный. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Скелет дракона. Мультяшный. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Ufo (летающая тарелка). Мультяшная. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Пингвин в снегу. Мультяшный. Головой в снегу. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Мультяшный рыбак зимой сидит рыбачит. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Человек летит на параплане. Мультяшный. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Куст в снегу мультяшный. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Дирижабль, мультяшный. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Рука белая. Иконка. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
Монетка золотая мультяшная. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
снежинка. мультяшная. Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows
text: New Record! Single Game Texture. In-Game asset. 2d. Blank background. High contrast. No shadows