Dự án 13: Sprite chạy 6 frame
Làm chu kỳ chạy 6 frame 64 × 64 px: tư thế chính contact và passing, khung xương, onion skin, xem thử bằng Timeline và xuất sprite sheet cho Unity 6.
Photoshop hiển thị tiếng Anh. Từ có gạch chân chấm là thuật ngữ trên giao diện — chạm để xem nghĩa, hoặc tra Từ điển Anh–Việt.
Tải về rồi mở bằng Photoshop: (Ctrl+O).
- Lưới sprite sheet 6 frame × 64 px (384 × 64 px, có đường nền) PNG · 1 KB
- Bảng màu tất cả dự án PNG · 136 KB
Đây là lúc nhân vật chuyển động. Một vòng chạy (run cycle) lặp đi lặp lại chỉ cần 6 hình, mỗi hình gọi là một frame. Xếp 6 frame thành một dải ngang ta có sprite sheet – file mà engine game cắt ra và phát liên tục. Bí quyết không phải vẽ đẹp từng frame, mà là 6 frame ăn khớp với nhau.
Hình mẫu
Thời gian ước tính: khoảng 4 giờ, chia 3 buổi: tư thế + khung xương, tô màu, ghép sheet và thử trong engine.
Chuẩn bị
- File vẽ: 256 × 256 px cho mỗi frame (gấp 4 lần 64 px), mỗi frame là một Group layer riêng. Cuối cùng thu về 64 × 64 px.
- Nhân vật: dùng nhân vật đơn giản (đầu tròn, thân hình thang, tay chân dạng ống) – chi tiết nhỏ sẽ biến mất ở 64 px.
- File mẫu: "Lưới sprite sheet 6 × 64 px" ở cuối bài: viền hồng là ranh giới frame, vạch xanh lá là đường nền (baseline) ở y = 58, vạch tím là mốc đỉnh đầu.
- Bảng: (dòng thời gian) để xem thử chuyển động.
| Màu | Mã hex | Dùng cho |
|---|---|---|
#31a8ff | Áo | |
#1f6fb8 | Bóng áo | |
#ff5c8a | Khăn quàng (bay theo nhịp chạy) | |
#ff9f43 | Tóc | |
#ffd7b5 | Da | |
#3d3f63 | Quần (chân gần) | |
#26274a | Quần chân xa (tối hơn để tách lớp) | |
#6b3e26 | Giày, thắt lưng |
6 tư thế của vòng chạy
| Frame | Tên | Mô tả |
|---|---|---|
| 1 | Contact (chạm đất) | Chân trước duỗi chạm đất, chân sau đạp phía sau. Tay ngược chân. |
| 2 | Down (nhún) | Thân hạ thấp nhất, chân trước gập đỡ trọng lượng. |
| 3 | Passing (chuyển chân) | Chân sau vung qua dưới thân, thân cao nhất. |
| 4–6 | Lặp lại, đổi chân | Giống 1–3 nhưng chân và tay đổi bên. |
Các bước
- Tạo file Ctrl+N 256 × 256 px, Background Contents: Transparent. Kẻ guide ngang ở y = 232 px (đường nền = 58 × 4) và y = 40 px (đỉnh đầu), guide dọc giữa ở 128 px.
- Tư thế chính trước: layer F1 Sketch: vẽ khung xương que (đầu tròn, cột sống, tay chân là các đoạn thẳng có khớp gối, khuỷu) cho frame 1 – Contact. Layer F3 Sketch: frame 3 – Passing. Hai tư thế này quyết định cả vòng chạy; nghiêng người về trước khoảng 10°.
- Frame trung gian: hạ Opacity (Độ mờ đục) F1 và F3 xuống 25% – đây là onion skin (giấy hành: nhìn xuyên frame trước/sau). Tạo F2 Sketch nằm giữa: thân thấp hơn F1 khoảng 8 px, chân trước gập. Frame 4–6: nhân đôi F1–F3 (Ctrl+J) rồi vẽ lại để đổi bên tay chân.
- Xem thử sớm: mở , bấm Create Frame Animation. Ở mỗi frame trong Timeline (Dòng thời gian) chỉ bật con mắt layer tương ứng (F1 ở frame 1, F2 ở frame 2…). Đặt thời gian mỗi frame 0,08 giây (khoảng 12 fps), Looping: Forever, bấm Play (Space). Sửa khung xương đến khi chuyển động mượt rồi mới tô.
- Nét và màu phẳng: với mỗi frame, tạo Group F1…F6 (Ctrl+G) chứa layer Line và Flat. Vẽ nét 6 px (sẽ còn 1,5 px sau khi thu nhỏ). Tô flat bằng Paint Bucket (Thùng sơn) (All Layers). Chân và tay phía xa dùng màu tối hơn (
#26274a, da#c98a6a) để không lẫn với chân gần. - Giữ nhất quán: tô xong F1, nhân đôi cả Group làm nền cho F2 rồi sửa phần khác – đầu, tóc, khăn thường chỉ cần dời xuống/lên theo độ nhún của thân. Luôn kiểm tra bàn chân chạm đúng guide đường nền.
- Đổ bóng: trong mỗi Group, layer Shadow Clipping Mask (Mặt nạ cắt) vào Flat, màu
#1f6fb8cho áo,#e8a987cho da, blend mode Normal. Chỉ 1 tông bóng – ở 64 px nhiều tông sẽ thành nhòe. Thêm rim#a9d8ffmảnh ở lưng. - Khăn quàng: đuôi khăn bay ra sau và nhấp nhô ngược nhịp với thân: khi thân hạ (F2, F5) đuôi khăn nâng lên. Chi tiết "theo sau" này (follow-through) làm chuyển động sống động.
- Onion skin bằng Timeline: chuyển Timeline sang chế độ video: bấm biểu tượng Convert to video timeline ở góc dưới – trái bảng Timeline, mở menu bảng (≡) › Enable Onion Skins. Bạn sẽ thấy frame trước (đỏ) và sau (xanh) mờ mờ – soát lại bước chân và độ nhún.
- Ghép sprite sheet: (Alt+Ctrl+C): Width 1536 px, Anchor ô giữa bên trái. Chọn Group F2, Ctrl+T, bấm biểu tượng tam giác Use relative positioning for reference point trên thanh Options, nhập X: 256 px, Enter. F3 dời 512 px, F4 768 px, F5 1024 px, F6 1280 px.
- Thu về 64 px: một bản sao (Shift+Ctrl+S) tên
run_sheet_4x.psd. Trên bản chính: (Alt+Ctrl+I), Width 384 px, Height 64 px, Resample (Lấy mẫu lại) Bicubic (Nội suy mượt) Sharper (reduction). Nếu bạn vẽ pixel art thì chọn Nearest Neighbor (Điểm lân cận) (hard edges). - Kiểm tra bằng lưới mẫu: mở file "Lưới sprite sheet 6 × 64 px" (Ctrl+O), kéo nó vào sheet làm layer trên cùng Opacity 50%. Mỗi nhân vật phải nằm gọn trong khung hồng, bàn chân chạm vạch xanh lá. Ẩn layer lưới trước khi xuất.
- Xuất PNG trong suốt: , PNG, Transparency (Độ trong suốt) bật, Scale 100% →
run_sheet.pngđúng 384 × 64 px. - Đưa vào Unity 6: kéo PNG vào Assets. Trong Inspector: Texture Type Sprite (2D and UI), Sprite Mode Multiple, Pixels Per Unit (Số pixel mỗi đơn vị) 64, Filter Mode (Chế độ lọc ảnh) Bilinear (ảnh vẽ tay; pixel art thì chọn Point (no filter)), Compression None, bấm Apply. Mở Sprite Editor › Slice › Type Grid By Cell Size 64 × 64 › Slice › Apply. Chọn 6 sprite con, kéo thả vào Scene – Unity tự tạo Animation Clip; chỉnh Sample Rate 12 trong cửa sổ Animation.
Nâng cao (tùy chọn)
- Idle 4 frame: vòng thở đứng yên: thân nhún 2 px, khăn lay nhẹ.
- Nhảy 3 frame: chuẩn bị (ngồi xuống), bật lên (duỗi), rơi (co chân).
- Sprite 8 frame: thêm 2 frame "up" (bay lên khỏi mặt đất) cho vòng chạy mượt hơn – sheet 512 × 64 px, cũng là lũy thừa của 2.
Mẹo & trick học nhanh
Tô xong frame 1, nhân đôi Group (Ctrl+J) làm điểm xuất phát cho frame 2. Chỉ sửa những gì thay đổi, phần giống nhau giữ nguyên để tránh rung.
Với Move Tool (V), mỗi lần nhấn phím mũi tên dời 1 px, giữ Shift dời 10 px. Với Free Transform, nhập giá trị X/Y trực tiếp trên thanh Options.
Sprite 2D thường chạy 10–12 hình/giây. Trong Timeline của Photoshop đặt 0,08 giây mỗi frame; trong Unity đặt Sample Rate 12.