Pixel Art Showcase

Melting Effect

Balok padat, lima tetesan, satu array. Tiap tetesan punya kecepatan dan fase awal sendiri — jadi lelehnya tidak pernah terlihat serentak, dan resetnya tidak pernah terlihat sama sekali.

↓ gulir untuk lihat mekanismenya
Kenapa Ini Terasa Cair

Bukan animasi berulang — ini lima ritme yang berbeda

Tiga keputusan kecil yang bikin efek leleh ini terasa organik, bukan seperti bar loading yang diulang-ulang.

5 tetesan, 5 ritme

Tiap tetesan di array drips[] punya speed dan base sendiri, jadi tidak ada dua tetesan yang memanjang bersamaan.

Reset yang tak kelihatan

Panjang tetesan dihitung dari (t/speed + base) % 1 — begitu mencapai 1, ia melingkar balik ke 0 secara mulus, tanpa lompatan yang kentara.

40×40, nol gambar

Seluruhnya cuma fillRect dan arc — tidak ada sprite, GIF, atau aset gambar yang perlu dimuat.

Data Sungguhan

Isi array drips[] apa adanya

Bukan angka contoh — ini lima objek yang benar-benar dipakai untuk menggambar tiap frame.

Posisi xFase awalKecepatanProgres relatif
x = 10base 0.2600
x = 15base 0.6800
x = 20base 0.0500
x = 25base 0.4900
x = 29base 0.8700
Urutan Gambar

Lima lapisan, digambar ulang tiap frame

Sama seperti melukis lapis demi lapis — belakang ke depan, lewat requestAnimationFrame.

01

Latar

Kanvas dibersihkan dan diisi satu warna solid setiap frame lewat fillRect — tidak ada jejak frame sebelumnya.

02

Balok padat

Persegi utama digambar dulu sebagai sumber lelehan — bentuk yang belum mencair, jadi acuan visual di atas.

03

Kilau permukaan

Strip tipis warna lebih terang ditumpuk di atas balok, memberi kesan permukaan yang memantulkan cahaya.

04

Badan tetesan

Setiap tetesan digambar sebagai persegi panjang tipis yang memanjang sesuai fase %1 miliknya sendiri.

05

Ujung tetes

Lingkaran kecil ditempel di ujung tiap tetesan lewat arc, menandai titik yang paling baru meleleh.

Empat Rasa

Warna berbeda, mesin leleh yang sama

Fungsi gambarnya tidak berubah — hanya warna balok, kilau, dan latar yang diganti lewat objek palet.

Label Kaset

Spesifikasi singkat

resolusi_logis40 × 40 px
jumlah_tetesan5, fase & kecepatan unik
render_looprequestAnimationFrame
palet_bawaananggur · lumut · lava · es krim
dependensi0
format1 file .html
Tempel di Proyekmu

Satu kanvas, satu array, satu loop

Tidak perlu npm install atau bundler. Buka filenya di browser, sudah meleleh.

// tiap tetesan cuma butuh 3 angka
const drips = [
  { x: 10, base: 0.2, speed: 600 },
  { x: 15, base: 0.6, speed: 800 },
];

// panjang tetesan = fase yang melingkar mulus
const phase = ((t / d.speed) + d.base) % 1;