← GranjaObjeto 3Dfogon/pato
Pato
Arrastrá para girarlo// «Pato» · gpt-6-sol (medium)
// A cute cartoon duck: a rounded white body with a flat upturned tail, a round white head on a short neck facing front (-y) with a wide flat bright orange bill, black dot eyes, white wings folded on the sides, and two short orange legs with wide webbed feet.
// Body and short neck
ellipsoid(24, 26, 17, 13, 11, 9, "#f3f2e8");
ellipsoid(24, 19, 24, 5, 5, 6, "#f5f5ec");
// Soft, sunny shading on the body
forEach((x, y, z, color) => {
if (color === "#f3f2e8") {
if (z >= 21) set(x, y, z, rand() < 0.12 ? "#ffffff" : "#fafaf2");
else if (z <= 12) set(x, y, z, "#e3e5dc");
else if (rand() < 0.035) set(x, y, z, "#ffffff");
}
});
// Flat, slightly upturned tail
ellipsoid(24, 36, 21, 8, 5, 3, "#f7f7ee");
box(18, 38, 22, 30, 42, 23, "#f7f7ee");
box(20, 41, 23, 28, 43, 24, "#ffffff");
box(21, 39, 24, 27, 42, 24, "#ffffff");
// Big round head
ellipsoid(24, 17, 32, 8, 8, 8, "#f7f7ef");
ellipsoid(24, 17, 36, 6, 6, 3, "#ffffff");
ellipsoid(24, 18, 27, 5, 5, 2, "#f7f7ef");
// Black dot eyes, facing forward
ellipsoid(19, 10, 34, 1.4, 1, 1.6, "#202328");
ellipsoid(29, 10, 34, 1.4, 1, 1.6, "#202328");
set(19, 9, 35, "#ffffff");
set(29, 9, 35, "#ffffff");
// Wide, flat orange bill: lower lip first, then the bright upper bill
ellipsoid(24, 9, 27, 6.5, 4, 1.4, "#df751b");
ellipsoid(24, 8, 29, 7.5, 4.5, 2, "#ff9b20");
box(19, 5, 28, 29, 7, 29, "#ffa52a");
box(21, 4, 28, 27, 5, 29, "#ff9b20");
set(21, 6, 31, "#c96619");
set(27, 6, 31, "#c96619");
// Folded left wing
part("leftWing", [13, 26, 21]);
ellipsoid(10, 26, 19, 3.5, 8, 4, "#e8eae2");
ellipsoid(10, 25, 21, 3, 6, 2.5, "#ffffff");
ellipsoid(9, 31, 18, 2.5, 4, 2, "#f5f6ee");
line(8, 28, 17, 9, 34, 18, 0, "#d9ded7");
animate("leftWing", { type: "swing", axis: "y", speed: 6, amplitude: 0.5 });
// Folded right wing
part("rightWing", [35, 26, 21]);
ellipsoid(38, 26, 19, 3.5, 8, 4, "#e8eae2");
ellipsoid(38, 25, 21, 3, 6, 2.5, "#ffffff");
ellipsoid(39, 31, 18, 2.5, 4, 2, "#f5f6ee");
line(40, 28, 17, 39, 34, 18, 0, "#d9ded7");
animate("rightWing", { type: "swing", axis: "y", speed: -6, amplitude: 0.5 });
// Short legs and broad, three-toed webbed feet
part("leftLeg", [19, 25, 10]);
cylinder(19, 25, 3, 2, 7, "#ec841e");
ellipsoid(19, 19, 2, 4.5, 7, 2, "#f28a1c");
ellipsoid(16, 15, 1, 1.8, 3, 1, "#ff9b22");
ellipsoid(19, 14, 1, 1.8, 3, 1, "#ffa028");
ellipsoid(22, 15, 1, 1.8, 3, 1, "#ff9b22");
animate("leftLeg", { type: "swing", axis: "x", speed: 5, amplitude: 0.3 });
part("rightLeg", [29, 25, 10]);
cylinder(29, 25, 3, 2, 7, "#ec841e");
ellipsoid(29, 19, 2, 4.5, 7, 2, "#f28a1c");
ellipsoid(26, 15, 1, 1.8, 3, 1, "#ff9b22");
ellipsoid(29, 14, 1, 1.8, 3, 1, "#ffa028");
ellipsoid(32, 15, 1, 1.8, 3, 1, "#ff9b22");
animate("rightLeg", { type: "swing", axis: "x", speed: -5, amplitude: 0.3 });import { draw } from "./assets/voxel";
import { pato } from "./assets/pato";
// En cada cuadro: parado sobre (x, y), el centro de su base.
draw(ctx, pato, 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 pato
# Con las herramientas de Fogón (conector)
add_assets({ slug: "<tu-juego>", ids: ["pato"] })
# Queda en client/assets/pato.ts
# https://fogon.page/object/pato