Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

98
Vistas
¿Hay alguna manera de fusionar varios mosaicos en un nivel? Kaboom JS

Al crear un nivel en kaboomJS con colisiones de mapas de mosaicos grandes, las cosas comienzan a ponerse lentas... Entonces, me preguntaba si había una manera fácil de fusionar múltiples mosaicos, como si una fila completa de bloques pudiera tratarse como un bloque grande.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

1. Los mosaicos no tienen que caber en la cuadrícula

Si desea reducir la cantidad de objetos de juego en la escena a la vez, puede tener un solo símbolo en su definición de nivel que represente un objeto de juego que abarque múltiples mosaicos de cuadrícula. Entonces, si desea muchas plataformas que tengan 3 cuadrados de cuadrícula de ancho, no necesita 3 objetos por plataforma, puede usar un solo carácter para representar un rectángulo de 3x1:

 import kaboom from "kaboom" // initialize context kaboom() // load assets loadSprite("bean", "sprites/bean.png") addLevel( // Note: the hyphens here hare just place holders to remind us that the // game objects created by ➁ and ➂ are actually taking up 2 and 3 grid // squares respectively. [ " ⚥ ", " ", " ➂-- ", " ", " ➁- ", " ", " ", "################################", ], { width: 32, height: 32, "⚥": () => [ sprite("bean"), area(), body(), "player" ], "#": () => [ rect(32, 32), outline(2), area(), solid(), ], "➁": () => [ rect(32 * 2, 32), outline(2), area(), solid(), ], "➂": () => [ rect(32 * 3, 32), outline(2), area(), solid(), ], } ); const player = get("player")[0]; player.onUpdate(() => { const left = isKeyDown('left') || isKeyDown('a'); const right = isKeyDown('right') || isKeyDown('d'); if (left && !right) { player.move(-500, 0); } else if (right && !left) { player.move(500, 0); } camPos(player.pos); }); onKeyPress("space", () => { if (player.isGrounded()) { player.jump(); } });

Obviamente, si tuviera muchas formas y tamaños diferentes, esto sería bastante oneroso.

2. Avanzado: árboles cuádruples y regiones de carga/descarga

De hecho, me encontré con este problema yo mismo en un proyecto reciente de Kaboom y decidí revisar por completo el addLevel() con mi propia implementación que se cargó desde un mapa de bits en lugar de un montón de cadenas, y luego organicé los datos de nivel en un quadtree para que Rápidamente pude encontrar fragmentos que se superponían al área visible y cargar y descargar objetos del juego en función de su visibilidad. La técnica y el código son un poco complejos para incluirlos aquí, por lo que solo vincularé el Repl y el código fuente relevante: level-loader.ts y lib-quad-tree.ts y el uso en level-one.js .

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda