Lộ trình › Animation sprite nâng cao › Bài 220/248

Dự án 2: Đồng xu xoay 8 frame

Đồng xu vàng xoay tròn – món đồ nhặt quen thuộc của game platformer – 8 frame 64 × 64 px trên sheet 512 × 64 px: học vẽ vật thể xoay bằng bề rộng co giãn theo cos góc, frame cạnh mỏng, đổi mặt trước – sau và nhịp đều cho vòng lặp liền mạch trong Unity 6.

Nâng cao 40 phút ★★★ Dễ Hướng dẫn cho Windows · đổi sang macOS

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.

File mẫu để luyện tập

Tải về rồi mở bằng Photoshop: FileTệp›OpenMở (Ctrl+O).

Đồng xu xoay là bài học về chuyển động 3D giả lập trên mặt phẳng 2D. Đồng xu không di chuyển, không đổi kích thước thật – chỉ có góc nhìn thay đổi, nên bề rộng của nó co lại thành elip rồi thành một vạch mỏng (frame cạnh) rồi nở ra mặt sau. Bạn sẽ học cách tính bề rộng bằng một công thức đơn giản, vì sao vòng lặp loại này cần nhịp đều (không ease) và cách giữ độ dày cạnh nhất quán để đồng xu trông "đặc" chứ không như tờ giấy. Kỹ thuật này dùng lại cho mọi vật xoay: ngôi sao nhặt được, viên ngọc, chìa khóa, cánh quạt.

Hình mẫu

Tám frame đồng xu: F1 mặt trước tròn đầy có ngôi sao, F2 nghiêng 45 độ, F3 chỉ còn cạnh mỏng, F4 nghiêng thấy mặt sau, F5 mặt sau tròn đầy, F6 đến F8 quay tiếp về mặt trước; thanh nhịp đều 83 ms
Tám frame đồng xu: F1 mặt trước tròn đầy có ngôi sao, F2 nghiêng 45 độ, F3 chỉ còn cạnh mỏng, F4 nghiêng thấy mặt sau, F5 mặt sau tròn đầy, F6 đến F8 quay tiếp về mặt trước; thanh nhịp đều 83 ms

Thời gian ước tính: khoảng 40 phút. Nhịp: 8 frame × 83 ms = 664 ms một vòng (12 fps), lặp mãi. Góc quay đều 45° mỗi frame – không dùng ease, vì đồng xu quay với tốc độ không đổi.

Chuẩn bị

  • Canvas: 512 × 64 px (8 frame × 64 px), Resolution (Độ phân giải) 72, RGB Color, Transparent. Đồng xu đường kính 52 px, chừa 6 px mỗi bên cho viền và tia lóe sáng.
  • Công cụ chính: Ellipse Tool (U), Rectangle Tool, Polygon Tool với Star Ratio cho ngôi sao, Free Transform (Biến đổi tự do) (Ctrl+T) gõ W theo phần trăm, Clipping Mask (Mặt nạ cắt) (Ctrl+Alt+G), Brush (Cọ vẽ) Tool (B) cho lóe sáng.
  • Thiết bị: toàn bộ dựng bằng Shape và gõ số nên chuột rất hợp. Bút (Wacom, XP-Pen, Huion, iPad + Apple Pencil (Bút chì) qua Sidecar/Astropad) chỉ giúp vẽ tia lóe sáng thon đầu: F5 › Shape Dynamics (Biến đổi hình dạng) › Size Jitter (Dao động kích thước) › Control Pen Pressure (Lực nhấn bút). Dùng chuột thì vẽ tia bằng Pen Tool (Bút tạo đường) rồi Stroke Path có tích Simulate Pressure.
  • File mẫu: "Khung 8 frame đồng xu" – đặt trên cùng và khóa. Mỗi ô có chữ thập ở tâm (32, 32), elip đứt nét là bề rộng đúng của góc ghi ở góc ô; ở 90° và 270° là khung chữ nhật 5 px cho frame cạnh.
MàuMã hexDùng cho
#ffd84aVàng thân – mặt xu
#fff3b0Vàng sáng – ngôi sao, viền sáng
#e0a020Vàng tối – vành trong
#a8641aCạnh xu (độ dày)
#5a3410Viền nâu – thay cho đen, hợp với vàng
#ffffffLóe sáng

Các bước

Sáu giai đoạn: mặt trước, frame cạnh và mặt sau làm khung chính, các frame nghiêng 71 phần trăm bề rộng, soát onion skin, tô vàng phẳng, thêm cạnh và lóe sáng, ghép sheet 8 frame
Sáu giai đoạn: mặt trước, frame cạnh và mặt sau làm khung chính, các frame nghiêng 71 phần trăm bề rộng, soát onion skin, tô vàng phẳng, thêm cạnh và lóe sáng, ghép sheet 8 frame
  1. Tính bề rộng trước khi vẽ: bề rộng mặt xu = 100% × |cos(góc)|. Với 8 frame cách nhau 45°: 0° → 100%, 45° → 71%, 90° → 0% (chỉ còn cạnh), 135° → 71%, 180° → 100% (mặt sau), 225° → 71%, 270° → cạnh, 315° → 71%. Chỉ có ba kích thước cần vẽ: tròn đầy, nghiêng 71% và cạnh.
  2. Tạo file: 512 × 64 px, Transparent, Gridline Every 64 Pixels. Đặt file mẫu trên cùng, khóa. Tạo 8 Group F1…F8.
  3. F1 – mặt trước: Ellipse Tool giữ Shift, vẽ tròn 52 px tâm (32, 32). Fill #ffd84a, Stroke 2 px #5a3410. Vẽ thêm tròn 40 px kẹp vào, Fill #e0a020 – vành trong. Rồi tròn 36 px Fill #ffd84a lệch lên trái 1 px: mặt xu hơi nổi.
  4. Ngôi sao: Polygon Tool, Number of Sides 5, bánh răng › Star Ratio 45%, kéo một ngôi sao rộng 26 px ở tâm, Fill #fff3b0. Gom các layer F1 lại – đây là thiết kế mặt trước dùng cho F1, F2, F8.
  5. F5 – mặt sau: nhân đôi Group F1 sang ô 5 (Ctrl+J, Move Tool (Công cụ Di chuyển) giữ Shift và dời đúng 256 px – gõ X trong Properties cho chắc). Thay ngôi sao bằng một hình tròn nhỏ 18 px #ffe680: người chơi phải phân biệt được mặt trước – sau, nếu không đồng xu trông như lắc qua lắc lại chứ không quay.
  6. F3 – frame cạnh: trong ô 3 vẽ Rectangle 8 × 52 px tâm (32, 32), Fill #a8641a, Stroke 2 px #5a3410, bo góc 2 px. Thêm một vạch 2 px #e0a020 ở giữa: cạnh xu có rãnh. Frame này mỏng nhưng không bao giờ biến mất – đồng xu có độ dày thật.
  7. F2 – nghiêng 45°: nhân đôi F1 sang ô 2. Ctrl+T, trên thanh Options gõ W 71%, H giữ 100%. Mọi chi tiết (ngôi sao, vành) co theo – đúng như phối cảnh thật.
  8. Thêm độ dày cho frame nghiêng: trong F2 nhân đôi hình tròn ngoài, đặt dưới mặt xu, Fill #a8641a, dời sang phải 3 px. Phần cạnh lộ ra bên phải cho thấy đồng xu đang quay sang trái. Độ dày lộ ra lớn nhất ở góc 45° và bằng 0 ở mặt chính diện.
  9. F4, F6, F8: F4 là mặt sau nghiêng: nhân đôi F5, co W 71%, cạnh lộ bên phải. F6: mặt sau nghiêng nhưng cạnh lộ bên trái (đã quay qua). F7: nhân đôi F3. F8: mặt trước 71%, cạnh lộ bên trái. Đảo phía của cạnh ở nửa vòng sau là chi tiết giúp vòng quay đọc liên tục.
  10. Lóe sáng: layer mới trên cùng F1 và F5 (hai frame chính diện): Brush Hard Round 3 px, vẽ một tia sáng bốn cánh #ffffff ở góc trên – trái. Chỉ lóe ở mặt chính diện vì đó là lúc mặt phẳng phản chiếu thẳng về người chơi.
  11. Soát onion skin: kéo tạm F1 và F3 chồng lên ô F2, Opacity (Độ mờ đục) 30%, Color Overlay (Phủ chồng) hồng – xanh lá. Tâm ba frame phải trùng chữ thập (32, 32); nếu không, đồng xu sẽ lắc ngang khi quay.
  12. Timeline (Dòng thời gian) nhịp đều: WindowCửa sổ›TimelineDòng thời gian › Create Frame Animation, 8 frame, chọn tất cả frame (bấm frame đầu, giữ Shift bấm frame cuối) rồi bấm số thời gian của một frame › Other… 0,083 – áp dụng cho cả 8. Looping Forever, Space để xem. Xuất GIF bằng FileTệp›Export›Save for Web (Legacy) nếu muốn gửi đi.
  13. Đưa vào Unity 6: ẩn file mẫu, Export As (Xuất ra (tùy chỉnh)) PNG → coin_spin.png 512 × 64 px. Inspector: Sprite (2D and UI), Sprite Mode Multiple, Pixels Per Unit (Số pixel mỗi đơn vị) 64, Filter Mode (Chế độ lọc ảnh) Bilinear → Apply. Sprite Editor › Slice › Grid By Cell Size 64 × 64, Pivot (Điểm neo) Center › Apply. Kéo 8 sprite vào Hierarchy, Animation window (Ctrl+6) › Show Sample Rate › Samples 12 – mỗi frame 1 ô là đúng 83 ms. Tích Loop Time. Thêm Circle Collider 2D tích Is Trigger và một script nhỏ OnTriggerEnter2D để nhặt xu.
Mẹo: Cho mỗi đồng xu trong màn chơi bắt đầu ở một frame khác nhau (trong script: animator.Play("CoinSpin", 0, Random.value)). Mười đồng xu quay đồng bộ trông máy móc; lệch pha một chút là cả hàng xu sống động hẳn.
Lỗi hay gặp: Bỏ frame cạnh vì "chỉ là một vạch". Thiếu frame cạnh, đồng xu như bị lật giấy và nhảy từ mặt trước sang mặt sau. Frame cạnh dù mỏng chính là khoảnh khắc mắt nhận ra độ dày của đồng xu.

Nâng cao (tùy chọn)

  • 6 frame thay vì 8: góc 60° mỗi frame (bề rộng 100% – 50% – 50% – 100%…). Ít frame hơn trông "giật" hơn nhưng hợp với game pixel; so sánh cảm giác hai bản.
  • Đồng xu bị hút về thanh điểm: khi nhặt, đổi sang clip Collect 4 frame: xu kéo dài theo hướng bay (stretch) rồi biến thành tia sáng – áp dụng lại bài quả bóng.
  • Bộ ba kim loại: thêm Adjustment Layer (Lớp điều chỉnh) Hue/Saturation (Sắc độ/Độ bão hòa) để có xu bạc (Saturation −100, Lightness +10) và xu đồng (Hue −15). Một sheet, ba mệnh giá.

Mẹo & trick học nhanh

Chỉ có ba kích thước

Với 8 frame cách 45°, bạn chỉ cần vẽ tròn đầy, nghiêng 71% và cạnh. Các frame còn lại là nhân đôi, lật mặt và đổi phía độ dày.

Vật quay đều thì nhịp đều

Ease dành cho vật tăng tốc hay giảm tốc. Đồng xu, cối xay gió, bánh xe quay đều nên mọi frame giữ cùng thời gian.

Viền màu thay cho viền đen

Viền nâu #5a3410 quanh đồ vàng trông ấm và cao cấp hơn viền đen thuần, nhất là khi sprite nhỏ 64 px.

Kiểm tra nhanh

1 Đồng xu nghiêng 45° có bề rộng bao nhiêu so với lúc chính diện?
2 Vì sao mặt sau đồng xu nên khác mặt trước?
3 Với sheet 8 frame mỗi frame 83 ms, Samples trong cửa sổ Animation nên đặt bao nhiêu để mỗi frame chiếm đúng 1 ô?

Bài tập: Sheet đồng xu (hoặc ngôi sao, viên ngọc) xoay 8 frame

Làm trong Photoshop rồi nộp file. Máy chấm kiểm tra các yêu cầu kỹ thuật và chỉ cách sửa từng lỗi; giáo viên chấm thêm phần thẩm mỹ.

Làm bài tập