Dự án 12: HUD game đối kháng
Thiết kế HUD cho game đánh đối kháng 1920 × 1080: hai thanh máu đối xứng có phần máu vừa mất, khung chân dung lục giác, đồng hồ đếm ngược, chấm thắng vòng và thanh siêu cấp – tách thành sprite để Unity 6 dựng bằng Image Filled và Anchors.
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).
Game đối kháng (fighting game) là nơi HUD (Heads-Up Display – lớp giao diện phủ trên màn chơi) bị "soi" nhiều nhất: hai người chơi vừa đánh vừa liếc thanh máu của nhau. HUD phải đối xứng hoàn hảo (công bằng cho hai bên), gọn ở mép trên và mép dưới (không che nhân vật), và phân biệt được hai phe bằng màu. Bạn sẽ học cách thiết kế một bên rồi lật cho bên kia, và cách tách HUD thành các mảnh để Unity tự co giãn thanh máu.
Hình mẫu
Thời gian ước tính: khoảng 5 giờ. Phần máu còn lại màu vàng, phần vừa mất màu đỏ – trong game phần đỏ tụt chậm phía sau để người chơi thấy cú đòn vừa rồi mạnh cỡ nào.
Chuẩn bị
- Canvas: 1920 × 1080 px (16:9), RGB Color. Thêm một ảnh chụp cảnh đấu (hoặc vẽ khối nhân vật xám) làm layer nền tham khảo, đặt tên REF.
- Khung mẫu: "Khung bố cục HUD" trên cùng, Multiply (Nhân (làm tối)). Vùng an toàn 5% (96 px ngang, 54 px dọc) – không đặt gì quan trọng ra ngoài vì một số TV cắt viền.
- Công cụ chính: Polygon Tool và Pen Tool (Bút tạo đường) cho thanh hình bình hành, Path Selection, Layer Style (Stroke, Gradient (Dải màu chuyển) Overlay (Phủ chồng), Inner Shadow), Type Tool, .
- Thiết bị: HUD dựng hoàn toàn bằng Shape và Layer Style nên chuột là đủ, thậm chí tiện hơn để gõ thông số. Bút chỉ cần khi vẽ tay chân dung nhân vật trong khung – khi đó bật Pen Pressure (Lực nhấn bút) cho line art.
| Màu | Mã hex | Dùng cho |
|---|---|---|
#ffd23f | Máu còn lại (bóng #e8a521) | |
#ff3b5c | Máu vừa mất | |
#1b1a24 | Nền thanh, đồng hồ | |
#f2b632 | Viền vàng kim loại | |
#ff5a5f | Phe 1 – đỏ | |
#3d8bff | Phe 2 – xanh | |
#31d0ff | Thanh siêu cấp | |
#ffd9b3 | Da chân dung | |
#2a1b4a | Nền sàn đấu (tham khảo) |
Các bước
- Tạo file Ctrl+N 1920 × 1080 px. Đặt khung mẫu, khóa lại. Kéo guide dọc ở x = 960 (trục đối xứng) và các guide theo khung: thanh máu y 80–152, siêu cấp y 940–1026.
- Chỉ làm bên trái trước: tạo Group P1. Mọi thứ của người chơi 1 nằm trong đây; người chơi 2 sẽ là bản lật của nó – đảm bảo công bằng tuyệt đối.
- Khung thanh máu: Pen Tool vẽ hình bình hành dài 560 × 72 px, hai đầu xiên 20 px (phía chân dung và phía đồng hồ). Fill
#1b1a24, Stroke Inside 6 px#f2b632. Đặt tên Bar Frame. - Phần máu (tách riêng): hình bình hành nhỏ hơn 12 px mỗi phía, Fill
#ffd23f, từ#fff4a6(trên) tới#e8a521(dưới). Đặt tên HP Fill. Đây sẽ là một sprite riêng để Unity cắt theo lượng máu. - Phần máu vừa mất: nhân đôi HP Fill, đổi thành
#ff3b5c, đặt dưới HP Fill, tên HP Damage. Trong hình mẫu chỉ lộ một đoạn ở đầu ngoài – trong game nó tụt chậm phía sau phần vàng. - Khung chân dung lục giác: Polygon Tool, Number of Sides 6, vẽ lục giác 200 × 200 px ở góc trên – trái vùng an toàn. Fill màu phe
#ff5a5f, Stroke 6 px vàng kim. Bên trong đặt chân dung nhân vật (vẽ đầu đơn giản hoặc ảnh), kẹp vào một lục giác nhỏ hơn bằng Ctrl+Alt+G. - Tên và chấm thắng vòng: Type Tool gõ tên "LINH" font đậm nghiêng 40 px, Stroke 4 px tối, ngay dưới thanh. Hai hình tròn 28 px gần đồng hồ: chấm rỗng (viền vàng) và chấm đã thắng (tô vàng).
- Thanh siêu cấp: ở đáy trái, hình bình hành 640 × 60 px viền
#31d0ff, bên trong 3 đoạn bằng nhau (mỗi đoạn là một "cấp"). Đoạn đã đầy tô#31d0ffvới vệt sáng trên; vòng tròn số cấp "2" ở đầu trong. - Đồng hồ giữa: ngoài Group P1, vẽ hình khiên 160 × 170 px căn giữa x = 960: Fill tối, Stroke vàng kim. Gõ "60" bằng font số đậm 90 px, căn giữa. Đồng hồ là thứ duy nhất không lật.
- Ánh sáng và chiều sâu: cho Bar Frame (đen, Distance 4 px) để thanh như lõm xuống; dải sáng 4 px trên đỉnh HP Fill; Drop Shadow nhẹ cho cả Group để HUD tách khỏi cảnh đấu sáng.
- Lật cho người chơi 2: nhân đôi Group P1 (Ctrl+J), đổi tên P2, và kéo sang đối xứng qua guide x = 960. Sửa lại: màu phe thành
#3d8bff, layer chữ "LINH" bị lật thì xóa và gõ lại "BÁO" căn phải; chấm thắng vòng và số cấp cũng gõ lại cho đúng chiều. - Kiểm tra trên cảnh thật: bật layer REF. HUD không được che đầu nhân vật khi nhảy cao; nếu chạm, thu gọn chiều cao thanh hoặc đẩy lên sát vùng an toàn. Thu về 50% để kiểm tra chữ và số vẫn đọc được trên màn hình nhỏ.
- Xuất từng mảnh: lưu PSD. Với mỗi mảnh (Bar Frame, HP Fill, HP Damage, khung chân dung, đồng hồ, đoạn siêu cấp, chấm thắng vòng): chuột phải layer › Export As (Xuất ra (tùy chỉnh))…, PNG, Transparency (Độ trong suốt) bật. Chỉ xuất mảnh của P1 và đồng hồ – P2 dùng lại sprite của P1. Không xuất chữ và số.
- Đưa vào Unity 6: Texture Type Sprite (2D and UI). Canvas › Canvas Scaler: UI Scale Mode Scale With Screen Size, Reference Resolution (Độ phân giải) 1920 × 1080, Match 0.5. Nhóm P1 neo (Anchor) góc trên – trái, P2 góc trên – phải, đồng hồ trên – giữa. HP Fill là Image Type Filled, Fill Method Horizontal: P1 Fill Origin Right (máu co về phía đồng hồ), P2 dùng cùng sprite với Scale X −1 hoặc Fill Origin ngược lại. HP Damage cũng Filled, script giảm Fill Amount chậm hơn. Tên, số đồng hồ và cấp siêu cấp là TextMeshPro.
Nâng cao (tùy chọn)
- Hiệu ứng "nguy kịch": khi máu dưới 20%, HP Fill nhấp nháy sang đỏ cam – làm thêm sprite HP Fill màu
#ff6a3d. - Thanh choáng (stun): thanh mảnh 300 × 16 px dưới thanh máu, màu tím – nhiều game đối kháng hiện đại dùng thêm thanh này.
- Màn K.O.: chữ "K.O." to 400 px với Stroke dày và Outer Glow đỏ, xuất riêng để Unity phóng to dần khi kết thúc vòng.
Mẹo & trick học nhanh
Mọi chỉnh sửa làm trên Group P1 rồi nhân đôi lật lại cho P2. Sửa trực tiếp trên P2 sẽ làm hai bên lệch nhau vài pixel – người chơi cảm nhận được sự "không công bằng".
Vẽ hình bình hành bằng Rectangle rồi Ctrl+T › chuột phải › Skew, kéo cạnh trên sang phải 20 px. Mọi thanh dùng cùng độ xiên để HUD có cùng "nhịp" chéo.
Đồng hồ và cấp siêu cấp nên dùng một font số đậm, chiều rộng các chữ số bằng nhau (tabular). Số "11" và "88" rộng như nhau thì đồng hồ không bị "rung" khi đếm.