User prompt
why are the hearts a black box fix that
User prompt
make live to three hearts in the midle
User prompt
give the player three lives
User prompt
make the monsters faster
User prompt
make gravity to 0.9
User prompt
make the player falls slower
User prompt
make the hitboxes from the monsters smaller
User prompt
make that the monsters roll in the other direction
User prompt
other direction
User prompt
make that the monsters roll โช๐ก Consider importing and using the following plugins: @upit/tween.v1
User prompt
make that the monsters roll
User prompt
make that the monsters bounce every 2 seconds
User prompt
make that the monsters bounce up from the floor โช๐ก Consider importing and using the following plugins: @upit/tween.v1
Remix started
Copy Mario vs Monsters
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ // Define a class for enemies var Enemy = Container.expand(function () { var self = Container.call(this); var enemyGraphics = self.attachAsset('enemy', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 5; self.velocityY = 0; self.gravity = 0.7; self.bounceCount = 0; self.isOnGround = true; self.groundLevel = 2732 / 2; self.lastY = self.groundLevel; self.lastBounceTime = 0; self.update = function () { self.x -= self.speed; // Track last position self.lastY = self.y; // Apply gravity and bounce if (!self.isOnGround) { self.velocityY += self.gravity; self.y += self.velocityY; // Check if hitting the ground if (self.y >= self.groundLevel) { self.y = self.groundLevel; self.isOnGround = true; // Bounce if we still have bounces left if (self.bounceCount < 3) { self.bounce(); } } } // Automatic bouncing every 2 seconds (120 frames at 60fps) if (self.isOnGround && LK.ticks - self.lastBounceTime >= 120) { self.bounce(); self.lastBounceTime = LK.ticks; } if (self.x < -50) { self.destroy(); } }; self.bounce = function () { self.isOnGround = false; // For automatic bounce every 2 seconds, reset bounce count if (LK.ticks - self.lastBounceTime >= 120) { self.bounceCount = 0; } self.bounceCount++; self.lastBounceTime = LK.ticks; // Reduce bounce height each time var bounceVelocity = -15 * (1 - self.bounceCount * 0.25); self.velocityY = bounceVelocity; // Add some visual feedback with a slight squash and stretch tween(enemyGraphics, { scaleX: 1.2, scaleY: 0.8 }, { duration: 150, easing: tween.easeOut, onFinish: function onFinish() { tween(enemyGraphics, { scaleX: 1, scaleY: 1 }, { duration: 200, easing: tween.easeOut }); } }); }; }); //<Assets used in the game will automatically appear here> // Define a class for the player character var Player = Container.expand(function () { var self = Container.call(this); var playerGraphics = self.attachAsset('player', { anchorX: 0.5, anchorY: 0.5 }); self.speed = 5; self.jumpHeight = 40; self.isJumping = false; self.velocityY = 0; self.update = function () { if (self.isJumping) { self.y += self.velocityY; self.velocityY += 0.7; // Decreased gravity effect by 30% if (self.y >= 2732 / 2) { // Ground level self.y = 2732 / 2; self.isJumping = false; self.velocityY = 0; } } }; self.jump = function () { if (!self.isJumping) { self.isJumping = true; self.velocityY = -self.jumpHeight; } }; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x87CEEB // Sky blue background }); /**** * Game Code ****/ var background = game.addChild(LK.getAsset('background', { anchorX: 0, anchorY: 0 })); background.x = 0; background.y = 0; // Initialize player var player = game.addChild(new Player()); player.x = 2048 / 2; player.y = 2732 / 2; // Initialize enemies var enemies = []; var enemySpawnInterval = 100; var enemySpawnCounter = 0; // Create a new Text2 object to display the score var scoreText = new Text2('0', { size: 100, fill: 0xFFFFFF }); // Add the score text to the game GUI at the top center of the screen LK.gui.top.addChild(scoreText); scoreText.x = 2048 / 2; scoreText.y = 0; // Handle game updates game.update = function () { player.update(); // Spawn enemies enemySpawnCounter++; if (enemySpawnCounter >= enemySpawnInterval) { var enemy = new Enemy(); enemy.x = 2048; enemy.y = 2732 / 2; enemies.push(enemy); game.addChild(enemy); // Trigger initial bounce enemy.bounce(); // Randomize the spawn interval for the next enemy enemySpawnInterval = Math.floor(Math.random() * 150) + 50; enemySpawnCounter = 0; } // Update enemies for (var j = enemies.length - 1; j >= 0; j--) { enemies[j].update(); if (player.intersects(enemies[j])) { LK.effects.flashScreen(0xff0000, 1000); LK.showGameOver(); } else if (player.x > enemies[j].x && !enemies[j].passed) { enemies[j].passed = true; LK.setScore(LK.getScore() + 1); scoreText.setText(LK.getScore()); } } }; // Handle player jump game.down = function (x, y, obj) { player.jump(); };
===================================================================
--- original.js
+++ change.js
@@ -19,8 +19,9 @@
self.bounceCount = 0;
self.isOnGround = true;
self.groundLevel = 2732 / 2;
self.lastY = self.groundLevel;
+ self.lastBounceTime = 0;
self.update = function () {
self.x -= self.speed;
// Track last position
self.lastY = self.y;
@@ -37,15 +38,25 @@
self.bounce();
}
}
}
+ // Automatic bouncing every 2 seconds (120 frames at 60fps)
+ if (self.isOnGround && LK.ticks - self.lastBounceTime >= 120) {
+ self.bounce();
+ self.lastBounceTime = LK.ticks;
+ }
if (self.x < -50) {
self.destroy();
}
};
self.bounce = function () {
self.isOnGround = false;
+ // For automatic bounce every 2 seconds, reset bounce count
+ if (LK.ticks - self.lastBounceTime >= 120) {
+ self.bounceCount = 0;
+ }
self.bounceCount++;
+ self.lastBounceTime = LK.ticks;
// Reduce bounce height each time
var bounceVelocity = -15 * (1 - self.bounceCount * 0.25);
self.velocityY = bounceVelocity;
// Add some visual feedback with a slight squash and stretch