← Piezas de nivel 2Objeto 3Dfogon/nivel-escalones
Escalones
Arrastrá para girarlo// «Escalones» · gpt-6-sol (medium)
// A modular staircase: full 48 wide on x (x 0..47), 48 deep on y. Six solid steps, each 8 deep on y and 4 taller than the previous, rising from z 0..3 at the front (y 0..7) to z 0..23 at the back (y 40..47), filled solid underneath. Light grey stone treads with a lighter front edge on each step, darker stone risers, flat vertical sides.
const tread = "#c6cdd1";
const treadLight = "#dbe0e2";
const frontEdge = "#edf0ef";
const stone = "#a1aab0";
const riser = "#858f99";
const side = "#929ca5";
for (let step = 0; step < 6; step++) {
const y0 = step * 8;
const y1 = y0 + 7;
const top = step * 4 + 3;
// Solid, grid-aligned step.
box(0, y0, 0, 47, y1, top, stone);
// Flat stone tread and its bright, readable front lip.
box(0, y0, top, 47, y1, top, tread);
box(0, y0 + 1, top, 47, y0 + 1, top, treadLight);
box(0, y0, top, 47, y0, top, frontEdge);
// Only the newly exposed four-block rise is visible at each step.
const riseBottom = step === 0 ? 0 : top - 3;
box(0, y0, riseBottom, 47, y0, top - 1, riser);
box(0, y0, top - 1, 47, y0, top - 1, "#aeb7bc");
// Clean, flat vertical sides, with subtle horizontal stone joints.
for (const x of [0, 47]) {
for (let y = y0; y <= y1; y++) {
for (let z = 0; z < top; z++) {
let color = side;
if (z > 0 && z % 4 === 0) color = "#87919a";
else if (z < 2) color = "#89939c";
set(x, y, z, color);
}
}
}
// Very light variation on broad treads; keep the kit crisp.
for (let y = y0 + 2; y <= y1; y++) {
for (let x = 1; x < 47; x++) {
if (rand() < 0.018) set(x, y, top, "#b9c2c7");
else if (rand() < 0.012) set(x, y, top, "#d2d8da");
}
}
}
// Finished back face, without changing the upper tread.
box(1, 47, 0, 46, 47, 22, "#929ca5");import { draw } from "./assets/voxel";
import { nivelEscalones } from "./assets/nivel-escalones";
// En cada cuadro: parado sobre (x, y), el centro de su base.
draw(ctx, nivelEscalones, x, y, { size: 64, angle: 0, t: performance.now() / 1000 });
// size: lo que mide en px su lado más largo
// angle: giro sobre el piso, en radianes
// t: segundos; si se mueve, se anima solo con eso# En una terminal, en la carpeta del juego
fogon assets add nivel-escalones
# Con las herramientas de Fogón (conector)
add_assets({ slug: "<tu-juego>", ids: ["nivel-escalones"] })
# Queda en client/assets/nivel-escalones.ts
# https://fogon.page/object/nivel-escalones