/****
* 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.