← BásicoObjeto 3Dfogon/camioneta-v1
Camioneta
Arrastrá para girarlo// «Camioneta» · gpt-6-sol (medium)
// Pickup truck («Camioneta»). One of several variations of this object: follow the reference picture closely.
const blue = "#267a9e";
const blueLight = "#3595b9";
const blueTop = "#45a5c9";
const blueDark = "#18546d";
const shadow = "#123949";
const glass = "#183e4a";
const metal = "#a5ada9";
// Undercarriage and main body
box(13, 7, 5, 34, 43, 8, "#303a3b");
box(11, 8, 9, 36, 42, 12, blueDark);
box(11, 8, 12, 36, 19, 14, blue);
box(12, 9, 15, 35, 17, 15, blueLight);
// Hood: broad, flat, and lightly textured
box(12, 7, 13, 35, 18, 14, blue);
box(13, 8, 15, 34, 17, 15, blueLight);
for (let x = 14; x <= 33; x++)
for (let y = 9; y <= 16; y++)
if (rand() < 0.12) set(x, y, 15, rand() < 0.5 ? "#3c9cbd" : "#3188a9");
line(18, 9, 16, 18, 16, 16, 0, "#236d8e");
line(29, 9, 16, 29, 16, 16, 0, "#236d8e");
box(13, 7, 12, 34, 7, 12, "#388fb0");
// Cab and angled front pillars
box(12, 19, 13, 35, 29, 19, blueDark);
box(13, 19, 20, 34, 29, 22, blue);
box(14, 17, 21, 33, 28, 23, blue);
box(15, 17, 24, 32, 28, 24, blueTop);
box(14, 18, 23, 33, 29, 23, blueDark);
box(15, 18, 24, 32, 28, 24, blueLight);
box(16, 19, 25, 31, 27, 25, "#3899be");
// Windshield
box(16, 18, 17, 31, 18, 20, glass);
box(16, 18, 21, 31, 18, 21, "#24586a");
box(14, 18, 18, 15, 18, 21, blueDark);
box(32, 18, 18, 33, 18, 21, blueDark);
box(17, 17, 17, 30, 17, 17, "#245166");
// Side windows and pillars
for (const x of [12, 35]) {
box(x, 20, 17, x, 25, 21, glass);
box(x, 26, 17, x, 28, 21, "#204b57");
box(x, 20, 21, x, 27, 21, "#28617a");
box(x, 25, 16, x, 25, 22, blueDark);
box(x, 19, 16, x, 19, 22, blue);
box(x, 29, 15, x, 29, 22, blueDark);
box(x, 20, 16, x, 28, 16, "#5294a2");
}
// Door panels and handles
box(11, 20, 11, 11, 29, 15, blue);
box(36, 20, 11, 36, 29, 15, blue);
box(10, 27, 14, 10, 28, 14, metal);
box(37, 27, 14, 37, 28, 14, metal);
box(11, 29, 11, 11, 29, 16, shadow);
box(36, 29, 11, 36, 29, 16, shadow);
// Mirrors on chunky dark brackets
box(8, 19, 16, 11, 20, 17, shadow);
box(8, 19, 17, 10, 21, 19, "#b7bbb2");
box(37, 19, 16, 39, 20, 17, shadow);
box(38, 19, 17, 40, 21, 19, "#a8aea9");
// Open pickup bed
box(12, 30, 11, 35, 42, 11, "#233e48");
box(13, 31, 12, 34, 41, 12, "#315c6b");
for (let x = 15; x <= 33; x += 5)
box(x, 32, 13, x, 40, 13, "#397187");
box(10, 30, 10, 12, 43, 16, blueDark);
box(35, 30, 10, 37, 43, 16, blueDark);
box(10, 31, 12, 10, 42, 15, blue);
box(37, 31, 12, 37, 42, 15, blue);
box(10, 30, 16, 12, 43, 16, blueLight);
box(35, 30, 16, 37, 43, 16, blueLight);
box(11, 42, 10, 36, 44, 15, blue);
box(11, 43, 16, 36, 43, 16, blueLight);
box(12, 44, 8, 35, 44, 9, "#89928e");
// Wooden crate visible behind the cab
box(22, 32, 13, 31, 38, 18, "#b77e3f");
box(22, 32, 19, 31, 38, 19, "#dda45c");
box(22, 32, 15, 31, 32, 16, "#e3ad66");
box(22, 37, 15, 31, 38, 15, "#855c34");
for (const x of [24, 29]) {
box(x, 32, 14, x, 38, 18, "#d2974f");
box(x, 32, 19, x, 38, 19, "#f0b76c");
}
// Front grille, bumper and headlights
box(12, 6, 8, 35, 7, 12, blueDark);
box(17, 5, 8, 30, 5, 10, "#323d3c");
for (const x of [19, 22, 25, 28])
box(x, 5, 9, x, 5, 10, "#83918d");
for (const x of [12, 32]) {
box(x, 5, 9, x + 3, 6, 12, "#a0a99f");
box(x + 1, 4, 10, x + 2, 4, 11, "#f1dfa7");
box(x, 5, 8, x + 3, 5, 8, "#535f5d");
}
box(11, 4, 5, 36, 5, 6, "#a4aaa1");
box(12, 4, 7, 35, 4, 7, "#4b5754");
box(10, 5, 5, 12, 7, 7, "#929d98");
box(35, 5, 5, 37, 7, 7, "#929d98");
// Running boards
for (const x of [9, 38]) {
box(x, 21, 7, x, 32, 8, "#8d9691");
box(x, 21, 9, x, 31, 9, "#283f43");
}
// Four thick tires with inset silver hubs
for (const y of [13, 37]) {
for (const [outer, inner, face] of [
[8, 12, 8],
[35, 39, 39]
]) {
for (let x = outer; x <= inner; x++)
for (let dy = -5; dy <= 5; dy++)
for (let dz = -5; dz <= 5; dz++) {
const d = dy * dy + dz * dz;
if (d <= 25) {
const c = d > 17 ? "#202626" : "#303737";
set(x, y + dy, 5 + dz, c);
}
}
for (let dy = -3; dy <= 3; dy++)
for (let dz = -3; dz <= 3; dz++) {
const d = dy * dy + dz * dz;
if (d <= 9)
set(face, y + dy, 5 + dz, d <= 2 ? "#c0c5ba" : "#858e89");
}
set(face, y, 5, "#596562");
}
}
// Raised blue fender edges above the tires
for (const y of [13, 37])
for (const x of [10, 37]) {
box(x, y - 5, 10, x, y - 3, 11, blueDark);
box(x, y - 3, 11, x, y + 3, 11, blueLight);
box(x, y + 3, 10, x, y + 5, 11, blueDark);
}
box(12, 19, 13, 12, 20, 15, "#3d91aa");
box(35, 19, 13, 35, 20, 15, "#3d91aa");import { draw } from "./assets/voxel";
import { camionetaV1 } from "./assets/camioneta-v1";
// En cada cuadro: parado sobre (x, y), el centro de su base.
draw(ctx, camionetaV1, 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 camioneta-v1
# Con las herramientas de Fogón (conector)
add_assets({ slug: "<tu-juego>", ids: ["camioneta-v1"] })
# Queda en client/assets/camioneta-v1.ts
# https://fogon.page/object/camioneta-v1