Code edit (14 edits merged)
Please save this source code
User prompt
el raton queda encerrado entre los objetos
User prompt
todos los assets deben ser un 50% mas grandes
Code edit (1 edits merged)
Please save this source code
User prompt
el gato debe estar a la altura de su cabeza aprox, debes trasladar el gato hacea arriba segun y
User prompt
me refiero a que el gato debe subir segun y
User prompt
sube solo los personajes y los objetos para que den la sensacion de que estan sobre las maderas
User prompt
siguen deamasiado alto
User prompt
los shelves deben bajar para que este a la altura de los pies del gato para dar la idea de que tanto los personaje como los objetos estan apoyados sobre las tablas
User prompt
unos 30px mas abajo
User prompt
mas abajo
User prompt
los shelf deben estar mas abajo
User prompt
el gato debe ser de 160 * 80
Code edit (1 edits merged)
Please save this source code
User prompt
el sprite del gato debe ser cuadrado de 80
User prompt
El juego debe ocupar más alto de pantalla
User prompt
Debe verse mucho más grande todo, el gato esta muy bajo
User prompt
Si una de las cosas que soja el gato caer sobre el perro, este muere
User prompt
El salto del gato debe ser más dinámico, tanto para arriba como para abajo ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
Debe verse todo mucho más grande, y debe haber separadores que bloqueen el camino si lo choca el gato pierde
User prompt
Hay dos personajes más, perro y raton, cuando aparece el ratón el gato corre hasta que lo atrapa, haciendo que el juego sea más complicado para el jugador, y lo mismo para el perro, solo que el gato debe perder de vista al perro ↪💡 Consider importing and using the following plugins: @upit/tween.v1
User prompt
La vista debe ser más cercana, también hay objetos que hacen caer al gato
Code edit (1 edits merged)
Please save this source code
User prompt
Shelf Cat: Laser Chase Cleanup
Initial prompt
Hola, quiero construir un juego de un gato que va caminando por estanterias en 5 niveles, deben tener principio y fin pero coando termina una aparece otra, la idea es que pueda subir y bajar con swipe, y siempre este avanzando se le puede cambiar la direccion con swipe tambien, la mecanica del juego es la del arcade conection city pero algo mas lenta, en las estanterias hay varios tipos de elementos que el gato hara caer si de tocan mientras el gato esta cerca, tambien habra un puntero laser que cuando el gato lo toque el usuario puede manejar la luz y el gato irs hacia el punto fonde apunte el isuario s toda velocidad tumbando todo a su paso, cada objeto tendra su propio sonido cuando cae, el objetivo es "limpiar" las estanterias de objetos
/**** * Plugins ****/ var tween = LK.import("@upit/tween.v1"); /**** * Classes ****/ var Cat = Container.expand(function () { var self = Container.call(this); var catGraphics = self.attachAsset('cat', { anchorX: 0.5, anchorY: 0.5, scaleX: 3, scaleY: 3 }); self.speed = 2; self.direction = 1; // 1 for right, -1 for left self.targetShelfLevel = 2; // Start on middle shelf (0-4) self.currentShelfLevel = 2; self.isLaserMode = false; self.laserModeTimer = 0; self.normalSpeed = 2; self.laserSpeed = 6; self.isChasing = false; self.chaseTarget = null; self.isHiding = false; self.hideTarget = null; self.isJumping = false; self.update = function () { // Move towards target shelf level with dynamic jumping animation var targetY = shelfLevels[self.targetShelfLevel]; if (Math.abs(self.y - targetY) > 5) { // Check if we need to start a new jump animation if (!self.isJumping) { self.isJumping = true; var jumpDistance = targetY - self.y; var jumpDuration = Math.abs(jumpDistance) * 0.8; // Duration based on distance // Stop any existing tween tween.stop(self, { y: true }); // Create dynamic jump with bounce effect if (self.y < targetY) { // Jumping down - faster with slight bounce tween(self, { y: targetY }, { duration: jumpDuration, easing: tween.bounceOut, onFinish: function onFinish() { self.y = targetY; self.currentShelfLevel = self.targetShelfLevel; self.isJumping = false; } }); } else { // Jumping up - elastic effect for more dynamic feel tween(self, { y: targetY }, { duration: jumpDuration * 1.2, easing: tween.elasticOut, onFinish: function onFinish() { self.y = targetY; self.currentShelfLevel = self.targetShelfLevel; self.isJumping = false; } }); } } } else { self.y = targetY; self.currentShelfLevel = self.targetShelfLevel; self.isJumping = false; } // Handle laser mode if (self.isLaserMode) { self.laserModeTimer--; if (self.laserModeTimer <= 0) { self.isLaserMode = false; self.speed = self.normalSpeed; } else if (laserDot) { // Chase laser dot var deltaX = laserDot.x - self.x; var deltaY = laserDot.y - self.y; var distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY); if (distance > 10) { self.x += deltaX / distance * self.laserSpeed; self.y += deltaY / distance * self.laserSpeed; // Update direction based on movement if (deltaX > 0) { self.direction = 1; catGraphics.scaleX = 1; } else { self.direction = -1; catGraphics.scaleX = -1; } } } } else if (self.isChasing && self.chaseTarget) { // Chase mouse mode var deltaX = self.chaseTarget.x - self.x; var deltaY = self.chaseTarget.y - self.y; var distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY); if (distance < 30) { // Caught the mouse! self.chaseTarget.destroy(); var mouseIndex = mice.indexOf(self.chaseTarget); if (mouseIndex > -1) { mice.splice(mouseIndex, 1); } self.isChasing = false; self.chaseTarget = null; LK.setScore(LK.getScore() + 100); scoreTxt.setText(LK.getScore()); LK.effects.flashObject(self, 0x00ff00, 500); } else if (distance > 5) { // Move towards mouse at high speed var chaseSpeed = 4; self.x += deltaX / distance * chaseSpeed; self.y += deltaY / distance * chaseSpeed; // Update direction and shelf level if (deltaX > 0) { self.direction = 1; catGraphics.scaleX = 1; } else { self.direction = -1; catGraphics.scaleX = -1; } // Update target shelf level based on mouse position for (var level = 0; level < 5; level++) { if (Math.abs(self.chaseTarget.y - shelfLevels[level]) < 50) { self.targetShelfLevel = level; break; } } } } else if (self.isHiding && self.hideTarget) { // Hide from dog mode - move away from dog var deltaX = self.x - self.hideTarget.x; var deltaY = self.y - self.hideTarget.y; var distance = Math.sqrt(deltaX * deltaX + deltaY * deltaY); if (distance > 300) { // Safe distance from dog self.isHiding = false; self.hideTarget = null; } else { // Move away from dog var hideSpeed = 3; if (distance > 5) { self.x += deltaX / distance * hideSpeed; // Update direction based on movement if (deltaX > 0) { self.direction = 1; catGraphics.scaleX = 1; } else { self.direction = -1; catGraphics.scaleX = -1; } } // Try to move to a different shelf level var dogLevel = -1; for (var level = 0; level < 5; level++) { if (Math.abs(self.hideTarget.y - shelfLevels[level]) < 50) { dogLevel = level; break; } } if (dogLevel !== -1 && self.targetShelfLevel === dogLevel) { // Move to adjacent shelf level if (dogLevel > 0 && dogLevel < 4) { self.targetShelfLevel = Math.random() < 0.5 ? dogLevel - 1 : dogLevel + 1; } else if (dogLevel === 0) { self.targetShelfLevel = 1; } else { self.targetShelfLevel = 3; } } } } else { // Normal movement self.x += self.speed * self.direction; // Update graphics direction if (self.direction > 0) { catGraphics.scaleX = 1; } else { catGraphics.scaleX = -1; } } // Check for collisions with objects for (var i = shelfObjects.length - 1; i >= 0; i--) { var obj = shelfObjects[i]; if (self.intersects(obj) && !obj.isFalling) { obj.startFalling(); LK.setScore(LK.getScore() + 10); scoreTxt.setText(LK.getScore()); // Play random knock sound var soundId = 'knock' + (Math.floor(Math.random() * 3) + 1); LK.getSound(soundId).play(); } } // Check for collisions with dangerous objects for (var i = dangerousObjects.length - 1; i >= 0; i--) { var dangerousObj = dangerousObjects[i]; if (self.intersects(dangerousObj) && dangerousObj.isDangerous && !dangerousObj.isFalling) { // Cat falls off the shelf dangerousObj.startFalling(); LK.getSound('catFall').play(); LK.effects.flashScreen(0xff0000, 500); // Reset cat position and reduce score self.x = cameraX + 512; self.y = shelfLevels[2]; self.targetShelfLevel = 2; self.currentShelfLevel = 2; LK.setScore(Math.max(0, LK.getScore() - 50)); scoreTxt.setText(LK.getScore()); } } // Check for collisions with dogs - cat can kill dog by falling on it for (var i = dogs.length - 1; i >= 0; i--) { var dog = dogs[i]; if (self.intersects(dog) && self.isJumping && self.y < dog.y - 20) { // Cat falls on dog and kills it LK.getSound('dogBark').play(); LK.effects.flashObject(self, 0x00ff00, 500); LK.setScore(LK.getScore() + 200); scoreTxt.setText(LK.getScore()); // Remove dog from game dog.destroy(); dogs.splice(i, 1); // Stop hiding behavior if this was the hide target if (dog === self.hideTarget) { self.isHiding = false; self.hideTarget = null; } } } // Check for collisions with separators for (var i = separators.length - 1; i >= 0; i--) { var separator = separators[i]; if (self.intersects(separator) && separator.isBlocking) { // Cat hits separator and loses LK.getSound('catFall').play(); LK.effects.flashScreen(0xff0000, 1000); // Reset cat position and reduce score heavily self.x = cameraX + 512; self.y = shelfLevels[2]; self.targetShelfLevel = 2; self.currentShelfLevel = 2; LK.setScore(Math.max(0, LK.getScore() - 100)); scoreTxt.setText(LK.getScore()); } } // Check for laser pointer pickup for (var i = laserPointers.length - 1; i >= 0; i--) { var pointer = laserPointers[i]; if (self.intersects(pointer)) { self.isLaserMode = true; self.laserModeTimer = 300; // 5 seconds at 60fps self.speed = self.laserSpeed; LK.getSound('laserPickup').play(); pointer.destroy(); laserPointers.splice(i, 1); // Create laser dot if (!laserDot) { laserDot = game.addChild(LK.getAsset('laserDot', { anchorX: 0.5, anchorY: 0.5 })); } laserDot.x = self.x + 100; laserDot.y = self.y; break; } } }; return self; }); var DangerousObject = Container.expand(function () { var self = Container.call(this); var dangerousGraphics = self.attachAsset('dangerousObject', { anchorX: 0.5, anchorY: 0.5, scaleX: 6, scaleY: 6 }); self.isFalling = false; self.fallSpeed = 0; self.isDangerous = true; self.pulseTimer = 0; self.startFalling = function () { self.isFalling = true; self.fallSpeed = 2; self.isDangerous = false; // Not dangerous when falling }; self.update = function () { if (!self.isFalling) { // Pulse effect to show it's dangerous self.pulseTimer++; var scale = 1 + Math.sin(self.pulseTimer * 0.15) * 0.3; dangerousGraphics.scaleX = scale; dangerousGraphics.scaleY = scale; } else { self.y += self.fallSpeed; self.fallSpeed += 0.2; // Gravity self.rotation += 0.1; if (self.y > 2732 + 50) { self.destroy(); var index = dangerousObjects.indexOf(self); if (index > -1) { dangerousObjects.splice(index, 1); } } } }; return self; }); var Dog = Container.expand(function () { var self = Container.call(this); var dogGraphics = self.attachAsset('dog', { anchorX: 0.5, anchorY: 0.5, scaleX: 6, scaleY: 6 }); self.speed = 1.5; self.direction = 1; self.alertRadius = 200; self.pulseTimer = 0; self.update = function () { // Pulse effect to show dog is dangerous self.pulseTimer++; var scale = 1 + Math.sin(self.pulseTimer * 0.15) * 0.2; dogGraphics.scaleX = scale * self.direction; dogGraphics.scaleY = scale; // Move dog self.x += self.speed * self.direction; // Change direction randomly if (Math.random() < 0.008) { self.direction *= -1; } // Check if cat is within alert radius var distance = Math.abs(self.x - cat.x) + Math.abs(self.y - cat.y); if (distance < self.alertRadius) { cat.isHiding = true; cat.hideTarget = self; if (Math.random() < 0.02) { LK.getSound('dogBark').play(); } } }; return self; }); var LaserPointer = Container.expand(function () { var self = Container.call(this); var pointerGraphics = self.attachAsset('laserPointer', { anchorX: 0.5, anchorY: 0.5, scaleX: 6, scaleY: 6 }); self.pulseTimer = 0; self.update = function () { self.pulseTimer++; var scale = 1 + Math.sin(self.pulseTimer * 0.1) * 0.2; pointerGraphics.scaleX = scale; pointerGraphics.scaleY = scale; }; return self; }); var Mouse = Container.expand(function () { var self = Container.call(this); var mouseGraphics = self.attachAsset('mouse', { anchorX: 0.5, anchorY: 0.5, scaleX: 6, scaleY: 6 }); self.speed = 3; self.direction = 1; self.isBeingChased = false; self.pulseTimer = 0; self.update = function () { // Pulse effect to make mouse visible self.pulseTimer++; var scale = 1 + Math.sin(self.pulseTimer * 0.2) * 0.3; mouseGraphics.scaleX = scale * self.direction; mouseGraphics.scaleY = scale; // Check for collisions with objects before moving var nextX = self.x + self.speed * self.direction; var willCollide = false; // Check collision with shelf objects for (var i = 0; i < shelfObjects.length; i++) { var obj = shelfObjects[i]; if (Math.abs(nextX - obj.x) < 80 && Math.abs(self.y - obj.y) < 60) { willCollide = true; break; } } // Check collision with dangerous objects if (!willCollide) { for (var i = 0; i < dangerousObjects.length; i++) { var dangerousObj = dangerousObjects[i]; if (Math.abs(nextX - dangerousObj.x) < 80 && Math.abs(self.y - dangerousObj.y) < 60) { willCollide = true; break; } } } // Check collision with separators if (!willCollide) { for (var i = 0; i < separators.length; i++) { var separator = separators[i]; if (Math.abs(nextX - separator.x) < 80 && Math.abs(self.y - separator.y) < 120) { willCollide = true; break; } } } // If collision detected, change direction if (willCollide) { self.direction *= -1; } // Move mouse self.x += self.speed * self.direction; // Change direction randomly or when hitting boundaries if (Math.random() < 0.01 || self.x < cat.x - 600 || self.x > cat.x + 600) { self.direction *= -1; } // Check if cat is close enough to chase var distance = Math.abs(self.x - cat.x) + Math.abs(self.y - cat.y); if (distance < 150 && !self.isBeingChased) { self.isBeingChased = true; cat.isChasing = true; cat.chaseTarget = self; LK.getSound('mouseSqueak').play(); } }; return self; }); var Separator = Container.expand(function () { var self = Container.call(this); var separatorGraphics = self.attachAsset('separator', { anchorX: 0.5, anchorY: 0.5, scaleX: 6, scaleY: 6 }); self.isBlocking = true; return self; }); var ShelfObject = Container.expand(function (objectType) { var self = Container.call(this); var assetName = 'object' + (objectType || 1); var objectGraphics = self.attachAsset(assetName, { anchorX: 0.5, anchorY: 0.5, scaleX: 6, scaleY: 6 }); self.isFalling = false; self.fallSpeed = 0; self.startFalling = function () { self.isFalling = true; self.fallSpeed = 2; }; self.update = function () { if (self.isFalling) { self.y += self.fallSpeed; self.fallSpeed += 0.2; // Gravity self.rotation += 0.1; if (self.y > 2732 + 50) { self.destroy(); var index = shelfObjects.indexOf(self); if (index > -1) { shelfObjects.splice(index, 1); } } } }; return self; }); /**** * Initialize Game ****/ var game = new LK.Game({ backgroundColor: 0x87CEEB }); /**** * Game Code ****/ var cat; var shelfObjects = []; var dangerousObjects = []; var laserPointers = []; var laserDot = null; var mice = []; var dogs = []; var separators = []; var nextMouseSpawn = 0; var nextDogSpawn = 0; var nextSeparatorSpawn = 0; var shelfLevels = [500, 800, 1200, 1600, 2000]; // Y positions for 5 shelf levels aligned with object feet var shelves = []; var nextObjectSpawn = 0; var nextDangerousSpawn = 0; var nextLaserSpawn = 0; var cameraX = 0; // Create score display var scoreTxt = new Text2('0', { size: 80, fill: 0xFFFFFF }); scoreTxt.anchor.set(0.5, 0); LK.gui.top.addChild(scoreTxt); scoreTxt.y = 50; // Create shelves for (var level = 0; level < 5; level++) { for (var section = 0; section < 10; section++) { var shelf = game.addChild(LK.getAsset('shelf', { anchorX: 0, anchorY: 0.5 })); shelf.x = section * 400; shelf.y = shelfLevels[level]; shelves.push(shelf); } } // Create cat cat = game.addChild(new Cat()); cat.x = 1024; cat.targetShelfLevel = 2; // Start on middle shelf cat.currentShelfLevel = 2; cat.y = shelfLevels[2]; // Start at middle shelf level at head height // Handle swipe controls var swipeStartX = 0; var swipeStartY = 0; var isDragging = false; game.down = function (x, y, obj) { swipeStartX = x; swipeStartY = y; isDragging = true; // If in laser mode, move laser dot if (cat.isLaserMode && laserDot) { laserDot.x = x; laserDot.y = y; } }; game.move = function (x, y, obj) { // If in laser mode, move laser dot if (cat.isLaserMode && laserDot) { laserDot.x = x; laserDot.y = y; } }; game.up = function (x, y, obj) { if (!isDragging) { return; } isDragging = false; var deltaX = x - swipeStartX; var deltaY = y - swipeStartY; var swipeDistance = Math.sqrt(deltaX * deltaX + deltaY * deltaY); if (swipeDistance < 50) { return; } // Minimum swipe distance if (Math.abs(deltaY) > Math.abs(deltaX)) { // Vertical swipe - change shelf level if (deltaY < 0 && cat.targetShelfLevel > 0) { cat.targetShelfLevel--; // Swipe up } else if (deltaY > 0 && cat.targetShelfLevel < 4) { cat.targetShelfLevel++; // Swipe down } } else { // Horizontal swipe - change direction if (!cat.isLaserMode) { if (deltaX > 0) { cat.direction = 1; // Right } else { cat.direction = -1; // Left } } } }; // Spawn objects and laser pointers function spawnObject() { if (LK.ticks < nextObjectSpawn) { return; } var objectType = Math.floor(Math.random() * 3) + 1; var obj = new ShelfObject(objectType); var level = Math.floor(Math.random() * 5); var xPos = cat.x + Math.random() * 800 + 400; obj.x = xPos; obj.y = shelfLevels[level] - 40; game.addChild(obj); shelfObjects.push(obj); nextObjectSpawn = LK.ticks + 30 + Math.random() * 60; } function spawnDangerousObject() { if (LK.ticks < nextDangerousSpawn) { return; } var dangerousObj = new DangerousObject(); var level = Math.floor(Math.random() * 5); var xPos = cat.x + Math.random() * 1000 + 600; dangerousObj.x = xPos; dangerousObj.y = shelfLevels[level] - 50; game.addChild(dangerousObj); dangerousObjects.push(dangerousObj); nextDangerousSpawn = LK.ticks + 180 + Math.random() * 240; // 3-7 seconds } function spawnLaserPointer() { if (LK.ticks < nextLaserSpawn) { return; } var pointer = new LaserPointer(); var level = Math.floor(Math.random() * 5); var xPos = cat.x + Math.random() * 600 + 300; pointer.x = xPos; pointer.y = shelfLevels[level] - 50; game.addChild(pointer); laserPointers.push(pointer); nextLaserSpawn = LK.ticks + 600 + Math.random() * 600; // 10-20 seconds } function spawnMouse() { if (LK.ticks < nextMouseSpawn) { return; } var mouse = new Mouse(); var level = Math.floor(Math.random() * 5); var xPos = cat.x + (Math.random() < 0.5 ? -1 : 1) * (Math.random() * 400 + 200); mouse.x = xPos; mouse.y = shelfLevels[level] - 40; game.addChild(mouse); mice.push(mouse); nextMouseSpawn = LK.ticks + 900 + Math.random() * 600; // 15-25 seconds } function spawnDog() { if (LK.ticks < nextDogSpawn) { return; } var dog = new Dog(); var level = Math.floor(Math.random() * 5); var xPos = cat.x + (Math.random() < 0.5 ? -1 : 1) * (Math.random() * 500 + 300); dog.x = xPos; dog.y = shelfLevels[level] - 60; game.addChild(dog); dogs.push(dog); nextDogSpawn = LK.ticks + 1200 + Math.random() * 900; // 20-35 seconds } function spawnSeparator() { if (LK.ticks < nextSeparatorSpawn) { return; } var separator = new Separator(); var level = Math.floor(Math.random() * 5); var xPos = cat.x + Math.random() * 1200 + 800; separator.x = xPos; separator.y = shelfLevels[level] - 120; game.addChild(separator); separators.push(separator); nextSeparatorSpawn = LK.ticks + 360 + Math.random() * 480; // 6-14 seconds } // Camera follow function updateCamera() { cameraX = cat.x - 512; // Closer camera view game.x = -cameraX; // Generate new shelves as needed var rightmostShelf = Math.max.apply(Math, shelves.map(function (s) { return s.x; })); if (rightmostShelf < cameraX + 3000) { for (var level = 0; level < 5; level++) { for (var section = 0; section < 5; section++) { var shelf = game.addChild(LK.getAsset('shelf', { anchorX: 0, anchorY: 0.5 })); shelf.x = rightmostShelf + 400 + section * 400; shelf.y = shelfLevels[level]; shelves.push(shelf); } } } } game.update = function () { spawnObject(); spawnDangerousObject(); spawnLaserPointer(); spawnMouse(); spawnDog(); spawnSeparator(); updateCamera(); // Clean up off-screen objects for (var i = shelfObjects.length - 1; i >= 0; i--) { var obj = shelfObjects[i]; if (obj.x < cameraX - 500) { obj.destroy(); shelfObjects.splice(i, 1); } } for (var i = dangerousObjects.length - 1; i >= 0; i--) { var dangerousObj = dangerousObjects[i]; if (dangerousObj.x < cameraX - 500) { dangerousObj.destroy(); dangerousObjects.splice(i, 1); } } for (var i = laserPointers.length - 1; i >= 0; i--) { var pointer = laserPointers[i]; if (pointer.x < cameraX - 500) { pointer.destroy(); laserPointers.splice(i, 1); } } // Clean up separators for (var i = separators.length - 1; i >= 0; i--) { var separator = separators[i]; if (separator.x < cameraX - 500) { separator.destroy(); separators.splice(i, 1); } } // Clean up mice for (var i = mice.length - 1; i >= 0; i--) { var mouse = mice[i]; if (mouse.x < cameraX - 600 || mouse.x > cameraX + 2500) { if (mouse === cat.chaseTarget) { cat.isChasing = false; cat.chaseTarget = null; } mouse.destroy(); mice.splice(i, 1); } } // Clean up dogs for (var i = dogs.length - 1; i >= 0; i--) { var dog = dogs[i]; if (dog.x < cameraX - 600 || dog.x > cameraX + 2500) { if (dog === cat.hideTarget) { cat.isHiding = false; cat.hideTarget = null; } dog.destroy(); dogs.splice(i, 1); } } // Remove laser dot when laser mode ends if (!cat.isLaserMode && laserDot) { laserDot.destroy(); laserDot = null; } };
===================================================================
--- original.js
+++ change.js
@@ -386,8 +386,43 @@
self.pulseTimer++;
var scale = 1 + Math.sin(self.pulseTimer * 0.2) * 0.3;
mouseGraphics.scaleX = scale * self.direction;
mouseGraphics.scaleY = scale;
+ // Check for collisions with objects before moving
+ var nextX = self.x + self.speed * self.direction;
+ var willCollide = false;
+ // Check collision with shelf objects
+ for (var i = 0; i < shelfObjects.length; i++) {
+ var obj = shelfObjects[i];
+ if (Math.abs(nextX - obj.x) < 80 && Math.abs(self.y - obj.y) < 60) {
+ willCollide = true;
+ break;
+ }
+ }
+ // Check collision with dangerous objects
+ if (!willCollide) {
+ for (var i = 0; i < dangerousObjects.length; i++) {
+ var dangerousObj = dangerousObjects[i];
+ if (Math.abs(nextX - dangerousObj.x) < 80 && Math.abs(self.y - dangerousObj.y) < 60) {
+ willCollide = true;
+ break;
+ }
+ }
+ }
+ // Check collision with separators
+ if (!willCollide) {
+ for (var i = 0; i < separators.length; i++) {
+ var separator = separators[i];
+ if (Math.abs(nextX - separator.x) < 80 && Math.abs(self.y - separator.y) < 120) {
+ willCollide = true;
+ break;
+ }
+ }
+ }
+ // If collision detected, change direction
+ if (willCollide) {
+ self.direction *= -1;
+ }
// Move mouse
self.x += self.speed * self.direction;
// Change direction randomly or when hitting boundaries
if (Math.random() < 0.01 || self.x < cat.x - 600 || self.x > cat.x + 600) {
Tabla de madera vista de costado, muy fina. Pixel art. In-Game asset. 2d. High contrast. No shadows
Raton tipo pixel art earthworm jim, la personalidad del ratón debe ser frenética asustadizo como la de ten de ten y stimpy, debe estar en cuatro patas. In-Game asset. 2d. High contrast. No shadows
Un perro bobo ladrando con los ojos cerrados pixel art dientes grandes, estilo earthworm jim. In-Game asset. 2d. High contrast. No shadows
Una madera separadora de estantería pixel art estilo metal slug vista de perfil In-Game asset. 2d. High contrast. No shadows
plato con decoraciones de oro pixel art metal slug style. In-Game asset. 2d. High contrast. No shadows
un vaso con agua estilo pixel art metal slug. In-Game asset. 2d. High contrast. No shadows
Un jabon con espuma, pixel art, metal slug. In-Game asset. 2d. High contrast. No shadows
hazlo con fondo verde, con el mismo estilo dando un sarpazo con mirada burlona a la camara
hazlo con fondo verde, con el mismo estilo cerrando los dientes con fuerza y bronca
Con el mismo estilo, modo cauteloso con la boca cerrada
Un foco pixel art tipo metal slug. In-Game asset. 2d. High contrast. No shadows
Un velador con base muy simple, sin lampara, tipo pixel art meta slug. In-Game asset. 2d. High contrast. No shadows
El mudo gato con el mismo estilo pero electrocutado con fondo verde
puedes cambiar la posicion de las patas, es decir las que estan atras pasan adelante y viceversa, con el mismo estilo pixel art de la foto original y fondo azul
cambia la posicion de las piernas como si hubiese dado un paso con el mismo estilo pixel art
Maceta con una flor, pixel art metal slug. In-Game asset. 2d. High contrast. No shadows
Puedes encerrarlo en una burbuja
En medio de un salto con el mismo estilo pixel art y fondo verde
con cara arrogante tiene que tirar un beso a camara y mostrar un corazon, la imagen sarcastica y graciosa, con fondo verde
El gato de estar sentado sobre sus dos patas traseras señalando hacia adelante y mirando a la cámara como irónicamente porque no puedes seguir avanzando
una pecera con un pez durmiendo, con estilo pixel art de metal slug con fondo verde. In-Game asset. 2d. High contrast. No shadows
el gato asustado arqueado con los pelos parados con el mismo estilo pixel art
un iphone en pixel art que tenga en la pantalla un ninja con una estrella y un rollo de papel higienico estilo comico. In-Game asset. 2d. High contrast. No shadows
el pez asustadisimo con estilo comico sin sombra con fondo verde
imagina un portatil que tenga en la pantalla la imagen actual, debe ser pixel art y con estilo comico
quiero construir una columa cilindrica muy larga de madera, para eso tengo que recurrir a repetir assets uno arriba del otro , puedes crear un segmento que pueda repetirse en pixel art?. In-Game asset. 2d. High contrast. No shadows
necesito construir un background para un hud, color madera clarito con 2 tornillos en los extremos bien en los bordes, con un borde viselado pixel art, muchisimo mas ancho que alto (relacion 5 - 20 aprox). In-Game asset. 2d. High contrast. No shadows
imagina un fondo con el mismo estilo del juego, debe decir arriba, Catatack y tener un estilo gatuno, siempre en pixel art, en el medio de la imagen, pondre texto variable, debes dejar ese espacio libre.. In-Game asset. 2d. High contrast. No shadows
reimaginalo bailando como tony manero en fiebre de sabado por la noche con fondo verde
una bola de espejos tipo fiebre de sabado por la noche con estilo pixel art con el cable de donde cuelga largo, con fondo verde . In-Game asset. 2d. High contrast. No shadows
perro cayendo de mucha altura asustadisimo con el mismo estilo con fondo verde, muy gracioso
dibuja 3 zetas en vez de 2, manten el mismo estilo pixel art