/****
* Classes
****/
// Asteroid class
var Asteroid = Container.expand(function () {
var self = Container.call(this);
var asteroidGraphics = self.attachAsset('asteroid', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 5;
self.update = function () {
self.y += self.speed;
};
});
//<Assets used in the game will automatically appear here>
// Slow Motion Power-Up class
var SlowMotionPowerUp = Container.expand(function () {
var self = Container.call(this);
var powerupGraphics = self.attachAsset('slowmo', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 6;
self.update = function () {
self.y += self.speed;
};
return self;
});
// Spaceship class
var Spaceship = Container.expand(function () {
var self = Container.call(this);
var spaceshipGraphics = self.attachAsset('spaceship', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 10;
self.update = function () {
// Spaceship update logic if needed
};
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000000 //Init game with black background
});
/****
* Game Code
****/
// Decorative star (pixelated, small)
// Decorative planet (different from moon, pixelated style)
// Title screen state and UI
var gameState = "title";
var titleContainer = new Container();
var startButton = null;
var titleText = null;
// Decorative asteroid (left)
var decoAsteroidL = LK.getAsset('asteroid', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 1.2,
scaleY: 1.2
});
decoAsteroidL.x = 2048 * 0.25;
decoAsteroidL.y = 650;
titleContainer.addChild(decoAsteroidL);
// Decorative asteroid (right)
var decoAsteroidR = LK.getAsset('asteroid', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 1.2,
scaleY: 1.2
});
decoAsteroidR.x = 2048 * 0.75;
decoAsteroidR.y = 650;
titleContainer.addChild(decoAsteroidR);
// Decorative slowmo powerup (left)
var decoPowerupL = LK.getAsset('slowmo', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 1,
scaleY: 1
});
decoPowerupL.x = 2048 * 0.18;
decoPowerupL.y = 1100;
titleContainer.addChild(decoPowerupL);
// Decorative slowmo powerup (right)
var decoPowerupR = LK.getAsset('slowmo', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 1,
scaleY: 1
});
decoPowerupR.x = 2048 * 0.82;
decoPowerupR.y = 1100;
titleContainer.addChild(decoPowerupR);
// Decorative spaceship (center, above title)
var decoShip = LK.getAsset('spaceship', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 1.3,
scaleY: 1.3
});
decoShip.x = 2048 / 2;
decoShip.y = 600;
titleContainer.addChild(decoShip);
// Decorative pixelated moon at the bottom center
// Use a placeholder moon asset (add to Assets if not present)
var decoMoon = LK.getAsset('moon', {
anchorX: 0.5,
anchorY: 1,
scaleX: 1.5,
scaleY: 1.5
});
decoMoon.x = 2048 / 2;
decoMoon.y = 2732 - 40;
titleContainer.addChild(decoMoon);
// Title text
titleText = new Text2("ASTEROID DODGE", {
size: 180,
fill: 0xffffff
});
titleText.anchor.set(0.5, 0.5);
titleText.x = 2048 / 2;
titleText.y = 900;
titleContainer.addChild(titleText);
// Decorative subtitle
var subtitleText = new Text2("Dodge asteroids, grab power-ups, survive!", {
size: 80,
fill: 0xccccff
});
subtitleText.anchor.set(0.5, 0.5);
subtitleText.x = 2048 / 2;
subtitleText.y = 1080;
titleContainer.addChild(subtitleText);
// Start button
startButton = new Container();
var btnBg = LK.getAsset('centerCircle', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 3,
scaleY: 1.2,
tint: 0x3399ff
});
btnBg.x = 0;
btnBg.y = 0;
startButton.addChild(btnBg);
var btnText = new Text2("START", {
size: 120,
fill: 0xffffff
});
btnText.anchor.set(0.5, 0.5);
btnText.x = 0;
btnText.y = 0;
startButton.addChild(btnText);
startButton.x = 2048 / 2;
startButton.y = 1400;
titleContainer.addChild(startButton);
// Add titleContainer to game
game.addChild(titleContainer);
// Spaceship and asteroids (initialized after pressing start)
var spaceship = null;
var asteroids = [];
// Decorative gameplay background elements
var decorStars = [];
var decorPlanet = null;
// Slow motion power-up variables
var slowMotionActive = false;
var slowMotionTimer = 0;
var SLOW_MOTION_DURATION = 180; // 3 seconds at 60fps
var SLOW_MOTION_FACTOR = 0.3; // Asteroids move at 30% speed
// Score text (initialized after pressing start)
var scoreTxt = null;
// --- Decorative assets for gameplay background ---
// (Removed decorative moon/planet from top right)
// Add several stars (using centerCircle asset, different tints/sizes)
for (var i = 0; i < 8; i++) {
var star = LK.getAsset('centerCircle', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 0.18 + Math.random() * 0.12,
scaleY: 0.18 + Math.random() * 0.12,
tint: [0xffffff, 0xfffbe0, 0xbbeeff, 0xffeedd][Math.floor(Math.random() * 4)]
});
// Randomly position stars, avoid top left 100x100
var sx = 120 + Math.random() * (2048 - 240);
var sy = 120 + Math.random() * (2732 - 240);
star.x = sx;
star.y = sy;
game.addChild(star);
decorStars.push(star);
}
// Start button event
startButton.down = function (x, y, obj) {
if (gameState !== "title") {
return;
}
// Remove title UI
titleContainer.visible = false;
// Start game
gameState = "playing";
// Initialize spaceship
spaceship = game.addChild(new Spaceship());
spaceship.x = 2048 / 2;
spaceship.y = 2732 - 200;
// Initialize asteroids array
asteroids = [];
// Reset slow motion
slowMotionActive = false;
slowMotionTimer = 0;
// Initialize score
LK.setScore(0);
// Score display
if (scoreTxt) {
scoreTxt.setText("0");
scoreTxt.visible = true;
} else {
scoreTxt = new Text2('0', {
size: 150,
fill: 0xFFFFFF
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
}
};
// Function to handle spaceship movement
function handleMove(x, y, obj) {
if (gameState !== "playing" || !spaceship) {
return;
}
spaceship.x = x;
// spaceship.y = y; // Commented out to restrict vertical movement
}
// Game move event
game.move = function (x, y, obj) {
if (gameState === "title") {
return;
}
handleMove(x, y, obj);
};
// Game update function
game.update = function () {
// Title screen logic
if (gameState === "title") {
// Show title UI, hide gameplay UI
if (titleContainer) {
titleContainer.visible = true;
}
if (scoreTxt) {
scoreTxt.visible = false;
}
// Hide gameplay decor
if (decorPlanet) {
decorPlanet.visible = false;
}
for (var ds = 0; ds < decorStars.length; ds++) {
decorStars[ds].visible = false;
}
return;
}
// Show gameplay UI, hide title UI
if (titleContainer) {
titleContainer.visible = false;
}
if (scoreTxt) {
scoreTxt.visible = true;
}
// Show gameplay decor
if (decorPlanet) {
decorPlanet.visible = true;
}
for (var ds = 0; ds < decorStars.length; ds++) {
decorStars[ds].visible = true;
}
// Dynamic difficulty variables
if (typeof asteroidSpawnInterval === "undefined") {
var asteroidSpawnInterval = 60; // Initial spawn interval (frames)
var asteroidBaseSpeed = 5; // Initial asteroid speed
var asteroidMaxSpeed = 30; // Cap asteroid speed
var asteroidMinInterval = 15; // Minimum interval between spawns
var asteroidDifficultyStep = 10; // Score step for difficulty increase
var asteroidLastDifficultyScore = 0;
}
// Increase difficulty based on score
var currentScore = LK.getScore();
if (currentScore - asteroidLastDifficultyScore >= asteroidDifficultyStep) {
asteroidLastDifficultyScore = currentScore;
// Increase speed, decrease interval
asteroidBaseSpeed = Math.min(asteroidBaseSpeed + 1, asteroidMaxSpeed);
asteroidSpawnInterval = Math.max(asteroidSpawnInterval - 5, asteroidMinInterval);
}
// Create new asteroids
if (LK.ticks % asteroidSpawnInterval == 0) {
var newAsteroid = new Asteroid();
newAsteroid.x = Math.random() * 2048;
newAsteroid.y = -50;
newAsteroid.speed = asteroidBaseSpeed;
asteroids.push(newAsteroid);
game.addChild(newAsteroid);
// 1 in 10 chance to spawn a slow motion power-up (but not if one is already active or present)
if (!slowMotionActive && Math.random() < 0.1 && typeof slowMotionPowerUp === "undefined") {
slowMotionPowerUp = new SlowMotionPowerUp();
slowMotionPowerUp.x = Math.random() * 2048;
slowMotionPowerUp.y = -100;
game.addChild(slowMotionPowerUp);
}
}
// Update asteroids
for (var i = asteroids.length - 1; i >= 0; i--) {
var asteroid = asteroids[i];
// Apply slow motion if active
if (slowMotionActive) {
asteroid.y += asteroid.speed * SLOW_MOTION_FACTOR;
} else {
asteroid.update();
}
// Check for collision with spaceship
if (spaceship && spaceship.intersects(asteroid)) {
LK.effects.flashScreen(0xff0000, 1000);
// Play collision sound if available
if (LK.getSound && LK.getSound('crash')) {
LK.getSound('crash').play();
}
// Show game over
LK.showGameOver();
// Reset to title screen after game over
gameState = "title";
// Remove spaceship and asteroids
if (spaceship) {
spaceship.destroy();
spaceship = null;
}
for (var j = 0; j < asteroids.length; j++) {
if (asteroids[j]) {
asteroids[j].destroy();
}
}
asteroids = [];
// Remove powerup if present
if (typeof slowMotionPowerUp !== "undefined" && slowMotionPowerUp) {
slowMotionPowerUp.destroy();
slowMotionPowerUp = undefined;
}
// Hide score
if (scoreTxt) {
scoreTxt.visible = false;
}
// Show title UI
if (titleContainer) {
titleContainer.visible = true;
}
return;
}
// Remove off-screen asteroids and increment score
if (asteroid.y > 2732 + 50) {
// Near miss visual/audio effect if asteroid was close to spaceship horizontally
var dx = spaceship ? Math.abs(asteroid.x - spaceship.x) : 9999;
if (dx < 200) {
LK.effects.flashScreen(0xffff00, 200); // Quick yellow flash for near miss
// Play near miss sound if available
if (LK.getSound && LK.getSound('nearMiss')) {
LK.getSound('nearMiss').play();
}
}
asteroid.destroy();
asteroids.splice(i, 1);
LK.setScore(LK.getScore() + 1); // Increment score for each asteroid dodged
if (scoreTxt) {
scoreTxt.setText(LK.getScore());
} // Update score display
// Play score up sound if available
if (LK.getSound && LK.getSound('scoreUp')) {
LK.getSound('scoreUp').play();
}
// Play asteroid whoosh sound if available
if (LK.getSound && LK.getSound('whoosh')) {
LK.getSound('whoosh').play();
}
}
}
// Handle slow motion power-up logic
if (typeof slowMotionPowerUp !== "undefined" && slowMotionPowerUp) {
// Move power-up
slowMotionPowerUp.y += slowMotionPowerUp.speed;
// Check for collision with spaceship
if (spaceship && spaceship.intersects(slowMotionPowerUp)) {
slowMotionActive = true;
slowMotionTimer = SLOW_MOTION_DURATION;
// Visual feedback for slow motion activation
LK.effects.flashScreen(0x3399ff, 400);
slowMotionPowerUp.destroy();
slowMotionPowerUp = undefined;
} else if (slowMotionPowerUp.y > 2732 + 100) {
// Remove if off screen
slowMotionPowerUp.destroy();
slowMotionPowerUp = undefined;
}
}
// Handle slow motion timer
if (slowMotionActive) {
slowMotionTimer--;
if (slowMotionTimer <= 0) {
slowMotionActive = false;
}
}
}; /****
* Classes
****/
// Asteroid class
var Asteroid = Container.expand(function () {
var self = Container.call(this);
var asteroidGraphics = self.attachAsset('asteroid', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 5;
self.update = function () {
self.y += self.speed;
};
});
//<Assets used in the game will automatically appear here>
// Slow Motion Power-Up class
var SlowMotionPowerUp = Container.expand(function () {
var self = Container.call(this);
var powerupGraphics = self.attachAsset('slowmo', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 6;
self.update = function () {
self.y += self.speed;
};
return self;
});
// Spaceship class
var Spaceship = Container.expand(function () {
var self = Container.call(this);
var spaceshipGraphics = self.attachAsset('spaceship', {
anchorX: 0.5,
anchorY: 0.5
});
self.speed = 10;
self.update = function () {
// Spaceship update logic if needed
};
});
/****
* Initialize Game
****/
var game = new LK.Game({
backgroundColor: 0x000000 //Init game with black background
});
/****
* Game Code
****/
// Decorative star (pixelated, small)
// Decorative planet (different from moon, pixelated style)
// Title screen state and UI
var gameState = "title";
var titleContainer = new Container();
var startButton = null;
var titleText = null;
// Decorative asteroid (left)
var decoAsteroidL = LK.getAsset('asteroid', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 1.2,
scaleY: 1.2
});
decoAsteroidL.x = 2048 * 0.25;
decoAsteroidL.y = 650;
titleContainer.addChild(decoAsteroidL);
// Decorative asteroid (right)
var decoAsteroidR = LK.getAsset('asteroid', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 1.2,
scaleY: 1.2
});
decoAsteroidR.x = 2048 * 0.75;
decoAsteroidR.y = 650;
titleContainer.addChild(decoAsteroidR);
// Decorative slowmo powerup (left)
var decoPowerupL = LK.getAsset('slowmo', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 1,
scaleY: 1
});
decoPowerupL.x = 2048 * 0.18;
decoPowerupL.y = 1100;
titleContainer.addChild(decoPowerupL);
// Decorative slowmo powerup (right)
var decoPowerupR = LK.getAsset('slowmo', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 1,
scaleY: 1
});
decoPowerupR.x = 2048 * 0.82;
decoPowerupR.y = 1100;
titleContainer.addChild(decoPowerupR);
// Decorative spaceship (center, above title)
var decoShip = LK.getAsset('spaceship', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 1.3,
scaleY: 1.3
});
decoShip.x = 2048 / 2;
decoShip.y = 600;
titleContainer.addChild(decoShip);
// Decorative pixelated moon at the bottom center
// Use a placeholder moon asset (add to Assets if not present)
var decoMoon = LK.getAsset('moon', {
anchorX: 0.5,
anchorY: 1,
scaleX: 1.5,
scaleY: 1.5
});
decoMoon.x = 2048 / 2;
decoMoon.y = 2732 - 40;
titleContainer.addChild(decoMoon);
// Title text
titleText = new Text2("ASTEROID DODGE", {
size: 180,
fill: 0xffffff
});
titleText.anchor.set(0.5, 0.5);
titleText.x = 2048 / 2;
titleText.y = 900;
titleContainer.addChild(titleText);
// Decorative subtitle
var subtitleText = new Text2("Dodge asteroids, grab power-ups, survive!", {
size: 80,
fill: 0xccccff
});
subtitleText.anchor.set(0.5, 0.5);
subtitleText.x = 2048 / 2;
subtitleText.y = 1080;
titleContainer.addChild(subtitleText);
// Start button
startButton = new Container();
var btnBg = LK.getAsset('centerCircle', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 3,
scaleY: 1.2,
tint: 0x3399ff
});
btnBg.x = 0;
btnBg.y = 0;
startButton.addChild(btnBg);
var btnText = new Text2("START", {
size: 120,
fill: 0xffffff
});
btnText.anchor.set(0.5, 0.5);
btnText.x = 0;
btnText.y = 0;
startButton.addChild(btnText);
startButton.x = 2048 / 2;
startButton.y = 1400;
titleContainer.addChild(startButton);
// Add titleContainer to game
game.addChild(titleContainer);
// Spaceship and asteroids (initialized after pressing start)
var spaceship = null;
var asteroids = [];
// Decorative gameplay background elements
var decorStars = [];
var decorPlanet = null;
// Slow motion power-up variables
var slowMotionActive = false;
var slowMotionTimer = 0;
var SLOW_MOTION_DURATION = 180; // 3 seconds at 60fps
var SLOW_MOTION_FACTOR = 0.3; // Asteroids move at 30% speed
// Score text (initialized after pressing start)
var scoreTxt = null;
// --- Decorative assets for gameplay background ---
// (Removed decorative moon/planet from top right)
// Add several stars (using centerCircle asset, different tints/sizes)
for (var i = 0; i < 8; i++) {
var star = LK.getAsset('centerCircle', {
anchorX: 0.5,
anchorY: 0.5,
scaleX: 0.18 + Math.random() * 0.12,
scaleY: 0.18 + Math.random() * 0.12,
tint: [0xffffff, 0xfffbe0, 0xbbeeff, 0xffeedd][Math.floor(Math.random() * 4)]
});
// Randomly position stars, avoid top left 100x100
var sx = 120 + Math.random() * (2048 - 240);
var sy = 120 + Math.random() * (2732 - 240);
star.x = sx;
star.y = sy;
game.addChild(star);
decorStars.push(star);
}
// Start button event
startButton.down = function (x, y, obj) {
if (gameState !== "title") {
return;
}
// Remove title UI
titleContainer.visible = false;
// Start game
gameState = "playing";
// Initialize spaceship
spaceship = game.addChild(new Spaceship());
spaceship.x = 2048 / 2;
spaceship.y = 2732 - 200;
// Initialize asteroids array
asteroids = [];
// Reset slow motion
slowMotionActive = false;
slowMotionTimer = 0;
// Initialize score
LK.setScore(0);
// Score display
if (scoreTxt) {
scoreTxt.setText("0");
scoreTxt.visible = true;
} else {
scoreTxt = new Text2('0', {
size: 150,
fill: 0xFFFFFF
});
scoreTxt.anchor.set(0.5, 0);
LK.gui.top.addChild(scoreTxt);
}
};
// Function to handle spaceship movement
function handleMove(x, y, obj) {
if (gameState !== "playing" || !spaceship) {
return;
}
spaceship.x = x;
// spaceship.y = y; // Commented out to restrict vertical movement
}
// Game move event
game.move = function (x, y, obj) {
if (gameState === "title") {
return;
}
handleMove(x, y, obj);
};
// Game update function
game.update = function () {
// Title screen logic
if (gameState === "title") {
// Show title UI, hide gameplay UI
if (titleContainer) {
titleContainer.visible = true;
}
if (scoreTxt) {
scoreTxt.visible = false;
}
// Hide gameplay decor
if (decorPlanet) {
decorPlanet.visible = false;
}
for (var ds = 0; ds < decorStars.length; ds++) {
decorStars[ds].visible = false;
}
return;
}
// Show gameplay UI, hide title UI
if (titleContainer) {
titleContainer.visible = false;
}
if (scoreTxt) {
scoreTxt.visible = true;
}
// Show gameplay decor
if (decorPlanet) {
decorPlanet.visible = true;
}
for (var ds = 0; ds < decorStars.length; ds++) {
decorStars[ds].visible = true;
}
// Dynamic difficulty variables
if (typeof asteroidSpawnInterval === "undefined") {
var asteroidSpawnInterval = 60; // Initial spawn interval (frames)
var asteroidBaseSpeed = 5; // Initial asteroid speed
var asteroidMaxSpeed = 30; // Cap asteroid speed
var asteroidMinInterval = 15; // Minimum interval between spawns
var asteroidDifficultyStep = 10; // Score step for difficulty increase
var asteroidLastDifficultyScore = 0;
}
// Increase difficulty based on score
var currentScore = LK.getScore();
if (currentScore - asteroidLastDifficultyScore >= asteroidDifficultyStep) {
asteroidLastDifficultyScore = currentScore;
// Increase speed, decrease interval
asteroidBaseSpeed = Math.min(asteroidBaseSpeed + 1, asteroidMaxSpeed);
asteroidSpawnInterval = Math.max(asteroidSpawnInterval - 5, asteroidMinInterval);
}
// Create new asteroids
if (LK.ticks % asteroidSpawnInterval == 0) {
var newAsteroid = new Asteroid();
newAsteroid.x = Math.random() * 2048;
newAsteroid.y = -50;
newAsteroid.speed = asteroidBaseSpeed;
asteroids.push(newAsteroid);
game.addChild(newAsteroid);
// 1 in 10 chance to spawn a slow motion power-up (but not if one is already active or present)
if (!slowMotionActive && Math.random() < 0.1 && typeof slowMotionPowerUp === "undefined") {
slowMotionPowerUp = new SlowMotionPowerUp();
slowMotionPowerUp.x = Math.random() * 2048;
slowMotionPowerUp.y = -100;
game.addChild(slowMotionPowerUp);
}
}
// Update asteroids
for (var i = asteroids.length - 1; i >= 0; i--) {
var asteroid = asteroids[i];
// Apply slow motion if active
if (slowMotionActive) {
asteroid.y += asteroid.speed * SLOW_MOTION_FACTOR;
} else {
asteroid.update();
}
// Check for collision with spaceship
if (spaceship && spaceship.intersects(asteroid)) {
LK.effects.flashScreen(0xff0000, 1000);
// Play collision sound if available
if (LK.getSound && LK.getSound('crash')) {
LK.getSound('crash').play();
}
// Show game over
LK.showGameOver();
// Reset to title screen after game over
gameState = "title";
// Remove spaceship and asteroids
if (spaceship) {
spaceship.destroy();
spaceship = null;
}
for (var j = 0; j < asteroids.length; j++) {
if (asteroids[j]) {
asteroids[j].destroy();
}
}
asteroids = [];
// Remove powerup if present
if (typeof slowMotionPowerUp !== "undefined" && slowMotionPowerUp) {
slowMotionPowerUp.destroy();
slowMotionPowerUp = undefined;
}
// Hide score
if (scoreTxt) {
scoreTxt.visible = false;
}
// Show title UI
if (titleContainer) {
titleContainer.visible = true;
}
return;
}
// Remove off-screen asteroids and increment score
if (asteroid.y > 2732 + 50) {
// Near miss visual/audio effect if asteroid was close to spaceship horizontally
var dx = spaceship ? Math.abs(asteroid.x - spaceship.x) : 9999;
if (dx < 200) {
LK.effects.flashScreen(0xffff00, 200); // Quick yellow flash for near miss
// Play near miss sound if available
if (LK.getSound && LK.getSound('nearMiss')) {
LK.getSound('nearMiss').play();
}
}
asteroid.destroy();
asteroids.splice(i, 1);
LK.setScore(LK.getScore() + 1); // Increment score for each asteroid dodged
if (scoreTxt) {
scoreTxt.setText(LK.getScore());
} // Update score display
// Play score up sound if available
if (LK.getSound && LK.getSound('scoreUp')) {
LK.getSound('scoreUp').play();
}
// Play asteroid whoosh sound if available
if (LK.getSound && LK.getSound('whoosh')) {
LK.getSound('whoosh').play();
}
}
}
// Handle slow motion power-up logic
if (typeof slowMotionPowerUp !== "undefined" && slowMotionPowerUp) {
// Move power-up
slowMotionPowerUp.y += slowMotionPowerUp.speed;
// Check for collision with spaceship
if (spaceship && spaceship.intersects(slowMotionPowerUp)) {
slowMotionActive = true;
slowMotionTimer = SLOW_MOTION_DURATION;
// Visual feedback for slow motion activation
LK.effects.flashScreen(0x3399ff, 400);
slowMotionPowerUp.destroy();
slowMotionPowerUp = undefined;
} else if (slowMotionPowerUp.y > 2732 + 100) {
// Remove if off screen
slowMotionPowerUp.destroy();
slowMotionPowerUp = undefined;
}
}
// Handle slow motion timer
if (slowMotionActive) {
slowMotionTimer--;
if (slowMotionTimer <= 0) {
slowMotionActive = false;
}
}
};