User prompt
Set blendMode to 1 for color mixing in FireworkParticle class
User prompt
do it
User prompt
make the CONFETTI RAIN animation as wide as the title text
User prompt
do it
User prompt
Please fix the bug: 'TypeError: Cannot set properties of undefined (setting 'vx')' in or related to this line: 'self.vx = 0; // Initialize vx to prevent undefined error' Line Number: 181
User prompt
Please fix the bug: 'TypeError: Cannot set properties of undefined (setting 'vx')' in or related to this line: 'self.vx = 0; // Initialize vx to prevent undefined error' Line Number: 181
User prompt
Please fix the bug: 'TypeError: Cannot set properties of undefined (setting 'vx')' in or related to this line: 'self.vx = 0; // No horizontal movement' Line Number: 181
User prompt
Please fix the bug: 'TypeError: Cannot set properties of undefined (setting 'vx')' in or related to this line: 'self.vx = 0; // No horizontal movement' Line Number: 181
User prompt
Add white colored particle falling effect animatin from the explosion place. Size is 10x10.
User prompt
Add to the map random colored particle falling animations from the explosion place
User prompt
Add random colored particle falling effect from the explode place
User prompt
Do it
User prompt
Repeat it by 2 seconds
User prompt
And after that load more golden particles randomize in the upper half of the map
User prompt
And then dont stop with one animation
User prompt
Wait with this explode until the firts loaded fireworks reach the half of the map
User prompt
Add more explode animation toward to the title text
User prompt
Add much more animation from this round to randomly tobthe map
User prompt
Do it
User prompt
Do it
Remix started
Copy Fireworks Simulator
/**** * Classes ****/ var ConfettiParticle = Container.expand(function () { var self = Container.call(this); var colors = [0xff0000, 0x00ff00, 0x0000ff, 0xffff00, 0xff00ff, 0x00ffff, 0xffa500, 0x4b0082, 0x800000, 0x008080, 0x000080, 0x800080, 0x808000, 0x008000, 0x0000A0, 0xA52A2A, 0x5F9EA0, 0x7FFF00, 0xD2691E, 0xFF7F50, 0xFFD700, 0xADFF2F, 0xFF69B4, 0xCD5C5C, 0x4B0082, 0x8A2BE2, 0x5F9EA0, 0x7FFF00, 0xD2691E, 0xFF7F50]; // Extended array of colors var color = colors[Math.floor(Math.random() * colors.length)]; var confettiGraphics = self.attachAsset('particle', { anchorX: 0.5, anchorY: 0.5, color: color }); self.vx = Math.random() * 2 - 1; // Random x velocity self.vy = Math.random() * 3 + 1; // Random y velocity self.alpha = Math.random() * 0.5 + 0.5; // Random initial opacity between 0.5 and 1 self.lifespan = 200; // Lifespan in ticks self.update = function () { self.x += self.vx; self.y += self.vy; self.alpha -= 1 / self.lifespan; if (--self.lifespan <= 0) { self.destroy(); } // Change color dynamically over time var newColorIndex = Math.floor(Math.random() * colors.length); confettiGraphics.tint = colors[newColorIndex]; }; }); // Class for Firework var Firework = Container.expand(function () { var self = Container.call(this); var colors = [0xff0000, 0x00ff00, 0x0000ff, 0xffff00, 0xff00ff, 0x00ffff, 0xffa500, 0x4b0082, 0x800000, 0x008080, 0x000080, 0x800080, 0x808000, 0x008000, 0x0000A0, 0xA52A2A, 0x5F9EA0, 0x7FFF00, 0xD2691E, 0xFF7F50, 0xFFD700, 0xADFF2F, 0xFF69B4, 0xCD5C5C, 0x4B0082, 0x8A2BE2, 0x5F9EA0, 0x7FFF00, 0xD2691E, 0xFF7F50]; // Extended array of colors var color = colors[Math.floor(Math.random() * colors.length)]; // Select a random color var fireworkGraphics = self.attachAsset('firework', { anchorX: 0.5, anchorY: 0.5, color: color // Apply the random color }); self.vy = -5; // Upward velocity self.exploded = false; self.update = function () { if (!self.exploded) { self.y += self.vy; if (self.y <= Math.random() * (2732 / 2)) { // Explode at a random height between the top of the map and the upper half self.explode(); } } }; self.explode = function () { self.exploded = true; LK.getSound('F1').play(); for (var i = 0; i < 100; i++) { // Create 100 particles var particle; if (self instanceof RedFirework) { particle = new RedFireworkParticle(); } else if (self instanceof BlueFirework) { particle = new PurpleFireworkParticle(); } else if (self instanceof GreenFirework) { particle = new GreenFireworkParticle(); } else if (self instanceof BlueFirework) { particle = new BlueFireworkParticle(); } else { particle = new FireworkParticle(); } particle.x = self.x; particle.y = self.y; // Add a random angle and speed to each particle var angle = Math.random() * Math.PI * 2; var speed = Math.random() * 5; particle.vx = Math.cos(angle) * speed; particle.vy = Math.sin(angle) * speed; game.addChild(particle); } self.destroy(); }; self.containsPoint = function (point) { var width = fireworkGraphics.width; var height = fireworkGraphics.height; return point.x > self.x - width / 2 && point.x < self.x + width / 2 && point.y > self.y - height / 2 && point.y < self.y + height / 2; }; }); // Class for Yellow Firework var YellowFirework = Firework.expand(function () { var self = Firework.call(this); Firework.call(this); var fireworkGraphics = this.attachAsset('yellowFirework', { anchorX: 0.5, anchorY: 0.5 }); }); // Class for Red Firework var RedFirework = Firework.expand(function () { var self = Firework.call(this); Firework.call(this); var fireworkGraphics = this.attachAsset('redFirework', { anchorX: 0.5, anchorY: 0.5 }); }); var PurpleFirework = Firework.expand(function () { var self = Firework.call(this); Firework.call(this); var fireworkGraphics = this.attachAsset('purpleFirework', { anchorX: 0.5, anchorY: 0.5 }); }); var PinkFirework = Firework.expand(function () { var self = Firework.call(this); Firework.call(this); var fireworkGraphics = this.attachAsset('pinkFirework', { anchorX: 0.5, anchorY: 0.5 }); }); var GreenFirework = Firework.expand(function () { var self = Firework.call(this); Firework.call(this); var fireworkGraphics = this.attachAsset('greenFirework', { anchorX: 0.5, anchorY: 0.5 }); }); // Class for Blue Firework var BlueFirework = Firework.expand(function () { var self = Firework.call(this); Firework.call(this); var fireworkGraphics = this.attachAsset('blueFirework', { anchorX: 0.5, anchorY: 0.5 }); }); var FireworkParticle = Container.expand(function () { var self = Container.call(this); var colors = [0xff0000, 0x00ff00, 0x0000ff, 0xffff00, 0xff00ff, 0x00ffff, 0xffa500, 0x4b0082, 0x800000, 0x008080, 0x000080, 0x800080, 0x808000, 0x008000, 0x0000A0, 0xA52A2A, 0x5F9EA0, 0x7FFF00, 0xD2691E, 0xFF7F50, 0xFFD700, 0xADFF2F, 0xFF69B4, 0xCD5C5C, 0x4B0082, 0x8A2BE2, 0x5F9EA0, 0x7FFF00, 0xD2691E, 0xFF7F50]; // Extended array of colors var color = colors[Math.floor(Math.random() * colors.length)]; // Select a random color var particleGraphics = self.attachAsset('particle', { anchorX: 0.5, anchorY: 0.5, color: color, // Apply the random color blendMode: 1 // Set blendMode to 1 for color mixing }); self.vx = Math.random() * 6 - 3; // Random x velocity self.vy = Math.random() * 6 - 3; // Random y velocity self.alpha = 1; self.lifespan = 100; // Lifespan in ticks self.update = function () { self.x += self.vx; self.y += self.vy; self.alpha -= 1 / self.lifespan; // Decrease the speed over time for a more realistic effect self.vx *= 0.99; self.vy *= 0.99; if (--self.lifespan <= 0) { self.destroy(); } }; }); // Class for Yellow Firework Particle var YellowFireworkParticle = FireworkParticle.expand(function () { var self = FireworkParticle.call(this); FireworkParticle.call(this); var particleGraphics = this.attachAsset('yellowParticle', { anchorX: 0.5, anchorY: 0.5 }); }); // Class for Red Firework Particle var RedFireworkParticle = FireworkParticle.expand(function () { var self = FireworkParticle.call(this); FireworkParticle.call(this); var particleGraphics = this.attachAsset('redParticle', { anchorX: 0.5, anchorY: 0.5 }); }); var PurpleFireworkParticle = FireworkParticle.expand(function () { var self = FireworkParticle.call(this); FireworkParticle.call(this); var particleGraphics = this.attachAsset('purpleParticle', { anchorX: 0.5, anchorY: 0.5 }); }); var PinkFireworkParticle = FireworkParticle.expand(function () { var self = FireworkParticle.call(this); FireworkParticle.call(this); var particleGraphics = self.attachAsset('pinkParticle', { anchorX: 0.5, anchorY: 0.5 }); game.addChild(particleGraphics); }); var GreenFireworkParticle = FireworkParticle.expand(function () { var self = FireworkParticle.call(this); FireworkParticle.call(this); var particleGraphics = this.attachAsset('greenParticle', { anchorX: 0.5, anchorY: 0.5 }); }); var GoldenFireworkParticle = FireworkParticle.expand(function () { var self = FireworkParticle.call(this); FireworkParticle.call(this); var particleGraphics = this.attachAsset('yellowParticle', { anchorX: 0.5, anchorY: 0.5 }); }); // Class for Blue Firework Particle var BlueFireworkParticle = FireworkParticle.expand(function () { var self = FireworkParticle.call(this); FireworkParticle.call(this); var particleGraphics = this.attachAsset('blueParticle', { anchorX: 0.5, anchorY: 0.5 }); }); /**** * Initialize Game ****/ //<Assets used in the game will automatically appear here> //<Write imports for supported plugins here> var game = new LK.Game({ backgroundColor: 0x000000 //Set background color to black }); /**** * Game Code ****/ var wallpaper = game.addChild(LK.getAsset('wallpaper', { anchorX: 0, anchorY: 0 })); // Add HAPPY NEW YEAR title to the upper half of the map var happyNewYearText = new Text2('HAPPY NEW YEAR', { size: 200, fill: 0xFFD700 // Golden color }); happyNewYearText.anchor.set(0.5, 0.5); // Center the anchor point happyNewYearText.x = 2048 / 2; // Center horizontally happyNewYearText.y = 2732 / 4; // Position in the upper half game.addChild(happyNewYearText); // Play rocket sound every 4 seconds LK.setInterval(function () { LK.getSound('Rocket').play(); }, 4000); // Handle game updates // Handle game updates game.update = function () { // Create new firework every 25 ticks if (LK.ticks % 25 === 0) { var firework; // Randomly decide the color of the firework var fireworkType = Math.random(); if (fireworkType < 0.2) { firework = new Firework(); } else if (fireworkType < 0.4) { firework = new RedFirework(); } else if (fireworkType < 0.6) { firework = new BlueFirework(); } else if (fireworkType < 0.7) { firework = new GreenFirework(); } else if (fireworkType < 0.8) { firework = new YellowFirework(); } else if (fireworkType < 0.9) { firework = new PurpleFirework(); } else { firework = new PinkFirework(); } firework.x = Math.random() * 2048; // Random x position firework.y = 2732; // Bottom of the screen game.addChild(firework); // Check if any firework has reached the middle of the map if (!game.explosionTriggered) { game.children.forEach(function (child) { if (child instanceof Firework && child.y <= 2732 / 2 && !child.exploded) { game.explosionTriggered = true; // Create golden particle explosion around the HAPPY NEW YEAR title for (var i = 0; i < 50; i++) { var goldenParticle = new GoldenFireworkParticle(); var angle = Math.random() * Math.PI * 2; var radius = 300; // Distance from the title goldenParticle.x = happyNewYearText.x + Math.cos(angle) * radius; goldenParticle.y = happyNewYearText.y + Math.sin(angle) * radius; goldenParticle.vx = Math.cos(angle) * 2; goldenParticle.vy = Math.sin(angle) * 2; game.addChild(goldenParticle); } // Load more golden particles randomly in the upper half of the map for (var j = 0; j < 100; j++) { var randomGoldenParticle = new GoldenFireworkParticle(); randomGoldenParticle.x = Math.random() * 2048; randomGoldenParticle.y = Math.random() * (2732 / 2); randomGoldenParticle.vx = Math.random() * 4 - 2; randomGoldenParticle.vy = Math.random() * 4 - 2; game.addChild(randomGoldenParticle); } // Create confetti rain under the HAPPY NEW YEAR title for (var k = 0; k < 200; k++) { var confettiParticle = new ConfettiParticle(); confettiParticle.x = happyNewYearText.x + Math.random() * happyNewYearText.width - happyNewYearText.width / 2; confettiParticle.y = happyNewYearText.y + 50 + Math.random() * 50; game.addChild(confettiParticle); } } }); } } }; // Handle click and swipe event game.down = function (x, y, obj) { console.log("Game was clicked at", x, y); // Store initial click position game.initialClick = { x: x, y: y }; }; game.up = function (x, y, obj) { console.log("Game was released at", x, y); // Calculate swipe distance var swipeDistance = x - game.initialClick.x; if (Math.abs(swipeDistance) > 100) { // Check if swipe is significant // Create a series of yellow particle explosions along the swipe line var numberOfExplosions = 30; for (var i = 0; i < numberOfExplosions; i++) { var explosionX = game.initialClick.x + swipeDistance / numberOfExplosions * i; var explosionY = game.initialClick.y; var yellowParticle = new YellowFireworkParticle(); yellowParticle.x = explosionX; yellowParticle.y = explosionY; game.addChild(yellowParticle); } } else { // Check if a firework was clicked game.children.forEach(function (child) { if (child instanceof Firework && !child.exploded && child.containsPoint(game.toLocal(obj.global))) { // If a firework was clicked and not exploded, explode it child.explode(); } }); // If no firework was clicked, create a new random color firework at the click position var fireworkTypes = [Firework, RedFirework, BlueFirework, YellowFirework, GreenFirework, PurpleFirework, PinkFirework]; var randomFireworkType = fireworkTypes[Math.floor(Math.random() * fireworkTypes.length)]; var newFirework = new randomFireworkType(); newFirework.x = x; newFirework.y = y; game.addChild(newFirework); } };
===================================================================
--- original.js
+++ change.js
@@ -138,9 +138,11 @@
var color = colors[Math.floor(Math.random() * colors.length)]; // Select a random color
var particleGraphics = self.attachAsset('particle', {
anchorX: 0.5,
anchorY: 0.5,
- color: color // Apply the random color
+ color: color,
+ // Apply the random color
+ blendMode: 1 // Set blendMode to 1 for color mixing
});
self.vx = Math.random() * 6 - 3; // Random x velocity
self.vy = Math.random() * 6 - 3; // Random y velocity
self.alpha = 1;