← Casa completaObjeto 3Dfogon/aire-acondicionado
Aire acondicionado
Arrastrá para girarlo// «Aire acondicionado» · gpt-6-sol (medium)
// A wall split air conditioner unit on a short wall piece: a long white rounded rectangular unit with a horizontal vent flap at the bottom, a small display with a blue number and a green light, and a remote control resting on a little shelf below.
const cream = "#f4e9d8";
const creamLight = "#fbf2e5";
const walnut = "#986846";
const honey = "#c99459";
// Short, warm wall.
box(2, 26, 0, 45, 29, 39, cream);
box(2, 25, 4, 45, 25, 39, creamLight);
for (let x = 3; x <= 44; x++) {
for (let z = 5; z <= 38; z++) {
if (rand() < 0.035) set(x, 25, z, "#f8edde");
}
}
box(2, 23, 0, 45, 30, 2, walnut);
box(2, 23, 3, 45, 27, 4, honey);
box(2, 25, 39, 45, 29, 40, "#fff5e6");
box(2, 24, 38, 45, 25, 38, "#dfc9a8");
// Air conditioner: a solid body with softly clipped corners.
for (let x = 5; x <= 42; x++) {
for (let y = 17; y <= 25; y++) {
for (let z = 26; z <= 38; z++) {
const ex = Math.min(x - 5, 42 - x);
const ez = Math.min(z - 26, 38 - z);
if (ex + ez < 2) continue;
let color = "#e9edef";
if (z >= 36) color = "#ffffff";
else if (z <= 28) color = "#cdd5d9";
else if (y === 17) color = rand() < 0.09 ? "#f4f7f7" : "#fbfcfa";
else if (x === 5 || x === 42) color = "#dce3e5";
set(x, y, z, color);
}
}
}
// Rounded, projecting face.
box(7, 16, 29, 40, 16, 36, "#f8faf9");
box(8, 15, 30, 39, 15, 35, "#ffffff");
box(9, 15, 36, 38, 16, 36, "#ffffff");
box(8, 15, 29, 39, 15, 29, "#dfe6e8");
box(8, 16, 37, 39, 23, 37, "#ffffff");
box(9, 14, 29, 39, 14, 29, "#dce3e5");
// A small pastel maker's mark.
box(10, 14, 32, 12, 14, 33, "#92c9c4");
box(13, 14, 32, 16, 14, 32, "#b9c8c9");
// Dark display, with two chunky blue digits.
box(30, 14, 30, 40, 14, 36, "#dbe3e6");
box(31, 13, 31, 39, 13, 35, "#344957");
function digitTwo(x) {
box(x, 12, 35, x + 2, 12, 35, "#79d8f5");
set(x + 2, 12, 34, "#79d8f5");
box(x, 12, 33, x + 2, 12, 33, "#79d8f5");
set(x, 12, 32, "#79d8f5");
box(x, 12, 31, x + 2, 12, 31, "#79d8f5");
}
digitTwo(32);
digitTwo(36);
set(27, 14, 32, "#608c70");
set(27, 13, 32, "#8de69a");
// Recessed outlet and its evenly spaced vanes.
box(9, 15, 26, 39, 15, 28, "#a7b5ba");
box(10, 14, 27, 38, 14, 28, "#576b75");
for (let x = 12; x <= 37; x += 5) {
box(x, 13, 27, x, 14, 28, "#b4c1c5");
}
// Honey-wood shelf, with two sturdy brackets.
box(21, 12, 13, 39, 25, 14, honey);
box(21, 11, 13, 39, 11, 13, "#e5b77c");
box(22, 12, 14, 38, 24, 14, "#edc48d");
box(23, 23, 8, 25, 25, 12, walnut);
box(35, 23, 8, 37, 25, 12, walnut);
box(23, 20, 11, 25, 24, 12, "#ad7850");
box(35, 20, 11, 37, 24, 12, "#ad7850");
// Remote resting upright on the shelf, facing the viewer.
box(29, 17, 15, 34, 20, 23, "#d5dfe0");
box(29, 16, 16, 34, 16, 22, "#f8faf8");
box(30, 16, 23, 33, 19, 23, "#ffffff");
box(30, 15, 20, 33, 15, 22, "#748d98");
box(31, 14, 21, 32, 14, 21, "#91d9ee");
set(30, 14, 18, "#76bcb4");
set(33, 14, 18, "#76bcb4");
set(31, 14, 17, "#adb9ba");
set(32, 14, 17, "#adb9ba");
box(30, 15, 15, 33, 16, 15, "#e9eeee");
// The long bottom vent flap pivots along its upper edge.
part("vent flap", [24, 13, 28]);
box(9, 13, 27, 39, 13, 27, "#d6e0e3");
box(8, 11, 25, 40, 12, 26, "#eef2f1");
box(9, 10, 25, 39, 10, 25, "#ffffff");
box(9, 11, 24, 39, 12, 24, "#c1cdd1");
animate("vent flap", { type: "swing", axis: "x", speed: 1.5, amplitude: 0.3 });import { draw } from "./assets/voxel";
import { aireAcondicionado } from "./assets/aire-acondicionado";
// En cada cuadro: parado sobre (x, y), el centro de su base.
draw(ctx, aireAcondicionado, 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 aire-acondicionado
# Con las herramientas de Fogón (conector)
add_assets({ slug: "<tu-juego>", ids: ["aire-acondicionado"] })
# Queda en client/assets/aire-acondicionado.ts
# https://fogon.page/object/aire-acondicionado