/**** * Classes ****/ // Assets are automatically created based on usage in the code. // Duck class var Duck = Container.expand(function () { var self = Container.call(this); // Initialize duck graphic var duckGraphics = self.attachAsset('duck', { anchorX: 0.5, anchorY: 0.5, flipX: 1 }); self.speed = Math.random() * 3 + 1; // Random speed between 1 and 4 self.direction = Math.random() < 0.5 ? -1 : 1; // Random direction left or right self._move_migrated = function () { self.x += self.speed * self.direction; // Reverse direction if hitting screen bounds if (self.x < 0 || self.x > 2048) { self.direction *= -1; } // Make the duck face the direction of its flight duckGraphics.scale.x = self.direction; }; self.on('down', function () { // Play the 'Shot' sound effect whenever a shot is fired LK.getSound('Shot').play(); // Check if there are bullets left before registering a hit if (bulletsLeft > 0) { // Decrease bullets left bulletsLeft--; // Increase score when duck is tapped LK.setScore(LK.getScore() + 1); scoreTxt.setText(LK.getScore()); // This block is intentionally left empty as the code above is removed to avoid duplication. } else { // If no bullets left, ignore the tap console.log("Out of bullets! Reload to continue."); } // Change duck to a dead duck asset self.removeChild(duckGraphics); var deadDuckGraphics = self.attachAsset('deadDuck', { anchorX: 0.5, anchorY: 0.5 }); // Remove movement and falling logic self._move_migrated = function () { self.y += 5; // Make the dead duck fall down }; // Remove duck from game after it falls off the screen LK.on('tick', function () { if (self.y > 2732) { // Check if duck has fallen off the screen self.destroy(); } }); }); }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x87CEEB // Light blue background to simulate sky }); /**** * Game Code ****/ // This line is intentionally left empty as the duplicate initialization of bulletsLeft is removed. // Sound initialization for 'duckHit' removed to fix the 'Uncaught TypeError' var bulletsLeft = 7; // Initialize bullets left for reload // Initialize bullets counter text display var bulletsCounterTxt = new Text2(bulletsLeft.toString(), { size: 100, fill: "#ffffff" }); // Position bullets counter in the bottom-right corner of the screen bulletsCounterTxt.anchor.set(1, 1); // Anchor to the bottom-right bulletsCounterTxt.x = 2048; // Position at the right edge of the screen bulletsCounterTxt.y = 2732; // Position at the bottom edge of the screen LK.gui.bottomRight.addChild(bulletsCounterTxt); // Add bullets counter to the GUI var ducks = []; // Array to keep track of ducks var bulletsLeft = 7; // Initialize bullets left for reload var maxBullets = 7; // Maximum bullets before reload var scoreTxt = new Text2('0', { size: 150, fill: "#ffffff" }); LK.gui.top.addChild(scoreTxt); // Add score text to the top-center of the screen // Function to spawn a duck function spawnDuck() { var duck = new Duck(); duck.x = Math.random() * 2048; // Random starting x position duck.y = Math.random() * 2732 / 2; // Random starting y position, only in the top half of the screen // Check if the new duck intersects with any existing duck for (var i = 0; i < ducks.length; i++) { if (duck.intersects(ducks[i])) { return; // If it intersects, return without adding the new duck } } game.addChild(duck); ducks.push(duck); } // Add a texture at the bottom of the screen var bottomTexture = LK.getAsset('bottomTexture', { anchorX: 0.5, anchorY: 1, x: 2048 / 2, y: 2732 }); game.addChildAt(bottomTexture, 0); // Play the 'Forest' sound effect in the background on a loop var forestSound = LK.getSound('Forest'); forestSound.loop = true; forestSound.play(); // Game tick function LK.on('tick', function () { // Move each duck and mark for removal if necessary var ducksToRemove = []; ducks.forEach(function (duck) { duck._move_migrated(); if (duck.y < -50 || duck.y > 2732) { // Check if duck is out of bounds ducksToRemove.push(duck); } }); // Remove marked ducks from game and array ducksToRemove.forEach(function (duck) { duck.destroy(); var index = ducks.indexOf(duck); if (index > -1) { ducks.splice(index, 1); } }); // Reload bullets every 2 seconds if out if (bulletsLeft <= 0 && LK.ticks % 120 == 0) { bulletsLeft = maxBullets; console.log("Bullets reloaded!"); } // Spawn a new duck every 60 frames (about 1 second) if (LK.ticks % 60 == 0) { spawnDuck(); } });
/****
* Classes
****/
// Assets are automatically created based on usage in the code.
// Duck class
var Duck = Container.expand(function () {
var self = Container.call(this);
// Initialize duck graphic
var duckGraphics = self.attachAsset('duck', {
anchorX: 0.5,
anchorY: 0.5,
flipX: 1
});
self.speed = Math.random() * 3 + 1; // Random speed between 1 and 4
self.direction = Math.random() < 0.5 ? -1 : 1; // Random direction left or right
self._move_migrated = function () {
self.x += self.speed * self.direction;
// Reverse direction if hitting screen bounds
if (self.x < 0 || self.x > 2048) {
self.direction *= -1;
}
// Make the duck face the direction of its flight
duckGraphics.scale.x = self.direction;
};
self.on('down', function () {
// Play the 'Shot' sound effect whenever a shot is fired
LK.getSound('Shot').play();
// Check if there are bullets left before registering a hit
if (bulletsLeft > 0) {
// Decrease bullets left
bulletsLeft--;
// Increase score when duck is tapped
LK.setScore(LK.getScore() + 1);
scoreTxt.setText(LK.getScore());
// This block is intentionally left empty as the code above is removed to avoid duplication.
} else {
// If no bullets left, ignore the tap
console.log("Out of bullets! Reload to continue.");
}
// Change duck to a dead duck asset
self.removeChild(duckGraphics);
var deadDuckGraphics = self.attachAsset('deadDuck', {
anchorX: 0.5,
anchorY: 0.5
});
// Remove movement and falling logic
self._move_migrated = function () {
self.y += 5; // Make the dead duck fall down
};
// Remove duck from game after it falls off the screen
LK.on('tick', function () {
if (self.y > 2732) {
// Check if duck has fallen off the screen
self.destroy();
}
});
});
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x87CEEB // Light blue background to simulate sky
});
/****
* Game Code
****/
// This line is intentionally left empty as the duplicate initialization of bulletsLeft is removed.
// Sound initialization for 'duckHit' removed to fix the 'Uncaught TypeError'
var bulletsLeft = 7; // Initialize bullets left for reload
// Initialize bullets counter text display
var bulletsCounterTxt = new Text2(bulletsLeft.toString(), {
size: 100,
fill: "#ffffff"
});
// Position bullets counter in the bottom-right corner of the screen
bulletsCounterTxt.anchor.set(1, 1); // Anchor to the bottom-right
bulletsCounterTxt.x = 2048; // Position at the right edge of the screen
bulletsCounterTxt.y = 2732; // Position at the bottom edge of the screen
LK.gui.bottomRight.addChild(bulletsCounterTxt); // Add bullets counter to the GUI
var ducks = []; // Array to keep track of ducks
var bulletsLeft = 7; // Initialize bullets left for reload
var maxBullets = 7; // Maximum bullets before reload
var scoreTxt = new Text2('0', {
size: 150,
fill: "#ffffff"
});
LK.gui.top.addChild(scoreTxt); // Add score text to the top-center of the screen
// Function to spawn a duck
function spawnDuck() {
var duck = new Duck();
duck.x = Math.random() * 2048; // Random starting x position
duck.y = Math.random() * 2732 / 2; // Random starting y position, only in the top half of the screen
// Check if the new duck intersects with any existing duck
for (var i = 0; i < ducks.length; i++) {
if (duck.intersects(ducks[i])) {
return; // If it intersects, return without adding the new duck
}
}
game.addChild(duck);
ducks.push(duck);
}
// Add a texture at the bottom of the screen
var bottomTexture = LK.getAsset('bottomTexture', {
anchorX: 0.5,
anchorY: 1,
x: 2048 / 2,
y: 2732
});
game.addChildAt(bottomTexture, 0);
// Play the 'Forest' sound effect in the background on a loop
var forestSound = LK.getSound('Forest');
forestSound.loop = true;
forestSound.play();
// Game tick function
LK.on('tick', function () {
// Move each duck and mark for removal if necessary
var ducksToRemove = [];
ducks.forEach(function (duck) {
duck._move_migrated();
if (duck.y < -50 || duck.y > 2732) {
// Check if duck is out of bounds
ducksToRemove.push(duck);
}
});
// Remove marked ducks from game and array
ducksToRemove.forEach(function (duck) {
duck.destroy();
var index = ducks.indexOf(duck);
if (index > -1) {
ducks.splice(index, 1);
}
});
// Reload bullets every 2 seconds if out
if (bulletsLeft <= 0 && LK.ticks % 120 == 0) {
bulletsLeft = maxBullets;
console.log("Bullets reloaded!");
}
// Spawn a new duck every 60 frames (about 1 second)
if (LK.ticks % 60 == 0) {
spawnDuck();
}
});
Измени счёт который щас используется у этого объекта. Текстура для 2д утки с полета утка из одиночной игры про охоту рисунков анмации
Прицел. 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.