← AnimalesObjeto 3Dfogon/aguila
Águila
Arrastrá para girarlo// «Águila» · gpt-6-sol (medium)
// A cartoon bald eagle with wings spread, facing front (-y): a dark brown body and wings, a white head and white tail, a big hooked yellow beak, fierce yellow eyes and yellow talons.
const brown = "#64351e";
const brownLight = "#80502b";
const brownDark = "#442717";
const featherDark = "#382319";
const white = "#f5f2df";
const whiteShade = "#d9ded5";
const whiteLight = "#fffdf1";
const yellow = "#ffc83c";
const yellowLight = "#ffe069";
const yellowDark = "#df9223";
const black = "#191919";
// Short legs and broad, forward-reaching talons.
for (const x of [19, 29]) {
ellipsoid(x, 24, 5, 2.5, 2.5, 5, brownDark);
ellipsoid(x, 20, 2, 2.6, 4, 2, yellowDark);
for (const dx of [-2, 0, 2]) {
line(x, 19, 2, x + dx, 14, 1, 1.3, yellow);
set(x + dx, 13, 0, yellowLight);
}
}
// A fan of white tail feathers behind the body.
for (let i = -3; i <= 3; i++) {
line(24 + i * 0.5, 29, 17, 24 + i * 1.5, 39, 12, 1.6, whiteShade);
line(24 + i * 0.5, 30, 18, 24 + i * 1.5, 38, 14, 0, whiteLight);
}
// Plump brown body, with a softly mottled upper surface.
ellipsoid(24, 24, 20, 9, 7.5, 11, brownDark);
ellipsoid(24, 23, 22, 8.5, 7, 9, brown);
forEach((x, y, z, color) => {
if (color === brown && z > 19 && rand() < 0.13)
set(x, y, z, rand() < 0.65 ? brownLight : brownDark);
});
ellipsoid(24, 17, 19, 5, 1.2, 6, brownLight);
// Bold white neck and oversized, rounded head.
ellipsoid(24, 22, 29, 7, 6, 5, whiteShade);
ellipsoid(24, 21, 35, 8, 7, 8, whiteShade);
ellipsoid(24, 20, 36, 7.5, 6.5, 7, white);
ellipsoid(24, 19, 40, 5.5, 4, 2.5, whiteLight);
// Fierce yellow eyes with simple black pupils and white glints.
for (const x of [20, 28]) {
ellipsoid(x, 14, 36, 2.2, 1.1, 2.2, yellowDark);
ellipsoid(x, 13, 36.5, 1.7, 0.8, 1.7, yellowLight);
ellipsoid(x, 12, 36, 0.9, 0.6, 1.1, black);
set(x, 11, 37, whiteLight);
}
// Sloping white brows give the little eagle its determined expression.
line(17, 12, 39, 22, 12, 38, 0, whiteLight);
line(26, 12, 38, 31, 12, 39, 0, whiteLight);
// Oversized hooked beak, projecting toward the viewer.
ellipsoid(24, 12, 33, 3.3, 4, 3.1, yellowDark);
ellipsoid(24, 11, 34, 3, 3.3, 2.5, yellow);
ellipsoid(24, 9, 31, 1.8, 1.7, 2.5, yellow);
set(24, 8, 28, yellowDark);
set(22, 9, 34, brownDark);
set(26, 9, 34, brownDark);
// Each broad wing is its own flapping part, hinged at the shoulder.
function wing(name, side, pivotX, speed) {
part(name, [pivotX, 24, 29]);
ellipsoid(pivotX + side, 24, 29, 3.5, 5, 3.5, brown);
for (let u = 1; u <= 12; u++) {
const x = pivotX + side * u;
const taper = u / 12;
ellipsoid(x, 24 + taper, 29 + taper,
2, 4.5 - taper, 2.5 - taper * 0.5, brownDark);
ellipsoid(x, 23 + taper, 31 + taper,
1.6, 2.8 - taper * 0.5, 0.8, brownLight);
}
// Separate rounded flight feathers along the trailing edge.
for (let u = 2; u <= 12; u += 2) {
const x = pivotX + side * u;
ellipsoid(x, 29 + u * 0.12, 27.5, 1.5, 4, 1.4, featherDark);
ellipsoid(x, 28 + u * 0.12, 28.5, 1.1, 2.6, 0.6, brown);
}
for (let u = 9; u <= 12; u++) {
const x = pivotX + side * u;
line(x, 26, 29, x + side, 32 + (u - 9), 27, 0, brownDark);
}
animate(name, { type: "swing", axis: "y", speed, amplitude: 0.4 });
}
wing("leftWing", -1, 16, 3);
wing("rightWing", 1, 32, -3);
part("body", [24, 24, 20]);import { draw } from "./assets/voxel";
import { aguila } from "./assets/aguila";
// En cada cuadro: parado sobre (x, y), el centro de su base.
draw(ctx, aguila, 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 aguila
# Con las herramientas de Fogón (conector)
add_assets({ slug: "<tu-juego>", ids: ["aguila"] })
# Queda en client/assets/aguila.ts
# https://fogon.page/object/aguila