← BásicoObjeto 3Dfogon/martillo
Martillo
Arrastrá para girarlo// «Martillo» · gpt-6-sol (medium)
// Claw hammer («Martillo»).
// Upright claw hammer: wooden handle, pale steel head, dark striking face.
const steel = "#c9d1d1";
const steelLight = "#e2e5e0";
const steelMid = "#aebbc0";
const steelDark = "#687780";
// Wooden handle, slightly wider at the foot and leaning toward the head.
for (let z = 0; z <= 33; z++) {
let x0 = z < 6 ? 19 : z < 15 ? 20 : z < 26 ? 21 : 22;
let x1 = z < 6 ? 25 : z < 15 ? 24 : z < 26 ? 25 : 26;
let y0 = z < 7 ? 20 : 21;
let y1 = 27;
for (let x = x0; x <= x1; x++) {
for (let y = y0; y <= y1; y++) {
let c = "#a47638";
if (x === x0 || y === y1) c = "#765026";
if (x === x1) c = "#8a5928";
if (y === y0) c = rand() < 0.15 ? "#bd8b49" : "#ae7937";
if (x === x0 + 1 && y === y0) c = "#d1a45c";
if (z < 4 && y === y0) c = "#94632e";
set(x, y, z, c);
}
}
}
// Irregular golden grain and the long bevels of the grip.
for (let z = 6; z < 30; z++) {
let x = z < 15 ? 21 : z < 26 ? 22 : 23;
let y = 21;
if (z % 9 !== 3 && z % 9 !== 4) set(x, y, z, "#c99750");
if (z % 11 < 5) set(x + 2, y, z, "#865323");
}
for (let z = 8; z < 29; z += 7) {
box(z < 15 ? 22 : 23, 20, z, z < 15 ? 23 : 24, 20, z + 1, "#754820");
set(z < 15 ? 21 : 22, 20, z + 2, "#dfb36b");
}
box(22, 20, 1, 24, 20, 4, "#71451f");
box(23, 19, 2, 24, 19, 3, "#4f3825");
set(22, 19, 4, "#d2a05a");
// Dark steel socket around the top of the wood.
box(21, 20, 30, 27, 28, 34, "#53616a");
box(22, 19, 32, 26, 19, 34, "#76888d");
box(23, 20, 30, 26, 20, 31, "#33434a");
box(23, 20, 33, 26, 20, 34, "#b6c3c3");
// Main rectangular head, with a bright upper plane and shadow underneath.
box(19, 18, 35, 36, 29, 42, steel);
box(19, 18, 35, 36, 18, 40, "#b8c4c6");
box(20, 18, 41, 35, 29, 42, steelLight);
box(20, 19, 42, 35, 28, 42, "#e7e8e2");
box(20, 29, 35, 36, 29, 40, "#829197");
box(20, 18, 35, 35, 28, 35, "#79888d");
box(22, 17, 35, 34, 17, 39, "#bcc9cb");
box(22, 17, 35, 34, 17, 35, "#8c9da1");
box(35, 18, 36, 36, 29, 41, "#95a3a8");
box(19, 19, 38, 19, 28, 41, "#f0eee6");
// Small bevels and restrained marks on the steel.
box(21, 17, 39, 34, 17, 40, "#d5dddd");
box(23, 17, 36, 29, 17, 36, "#a9b6b9");
set(30, 17, 38, "#e6e9e5");
set(32, 17, 37, "#dce3e2");
box(34, 18, 40, 35, 19, 41, "#f2f0e8");
// Narrow neck leading to the striking face.
box(13, 21, 36, 19, 26, 39, "#a3b1b5");
box(14, 21, 39, 19, 26, 40, "#e0e3de");
box(14, 20, 37, 17, 20, 38, "#84949a");
box(16, 21, 35, 19, 26, 36, "#65757c");
box(17, 19, 38, 19, 20, 39, "#ced9d8");
box(14, 22, 35, 16, 25, 35, "#56646d");
// Broad striking plate with a recessed charcoal striking surface.
box(8, 18, 33, 13, 29, 40, "#a8b4b8");
box(8, 19, 40, 13, 28, 40, "#dce1df");
box(8, 18, 34, 13, 18, 39, "#798990");
box(8, 20, 34, 8, 27, 39, "#56656d");
box(8, 21, 35, 8, 26, 38, "#39474f");
box(9, 18, 34, 11, 18, 38, "#6a7981");
box(11, 19, 33, 13, 28, 33, "#68777e");
box(12, 19, 35, 13, 19, 38, "#d0d8d7");
// Split claw: two separated, hooked steel tines.
for (const [ya, yb] of [[18, 20], [27, 29]]) {
box(36, ya, 38, 39, yb, 41, "#b2bfc1");
box(37, ya, 41, 39, yb, 41, "#e1e5e0");
box(38, ya, 36, 41, yb, 39, "#84949a");
box(40, ya, 34, 42, yb, 37, "#9daeb1");
box(42, ya, 32, 43, yb, 35, "#718188");
box(43, ya, 31, 44, yb, 32, "#506169");
box(40, ya, 37, 41, ya, 38, "#dae1de");
box(42, ya, 34, 42, ya, 36, "#c3cfd0");
box(43, yb, 31, 44, yb, 33, "#36464f");
}
box(37, 21, 39, 39, 26, 40, "#798990");
box(38, 21, 40, 39, 26, 40, "#cbd5d4");
// Tiny worn stamps on the visible top of the head.
box(24, 20, 43, 26, 21, 43, "#ba8243");
box(27, 21, 43, 29, 22, 43, "#4a6670");
box(30, 23, 43, 31, 24, 43, "#d3a056");
set(33, 25, 43, "#526870");
set(34, 26, 43, "#5e737b");import { draw } from "./assets/voxel";
import { martillo } from "./assets/martillo";
// En cada cuadro: parado sobre (x, y), el centro de su base.
draw(ctx, martillo, 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 martillo
# Con las herramientas de Fogón (conector)
add_assets({ slug: "<tu-juego>", ids: ["martillo"] })
# Queda en client/assets/martillo.ts
# https://fogon.page/object/martillo