Hiệu ứng hình ảnh (VFX) đóng vai trò then chốt trong việc tạo ra trải nghiệm game sống động và hấp dẫn. Trong bài viết này, FPT Polytechnic TP HCM sẽ giúp bạn khám phá cách ứng dụng công cụ VFX Graph mạnh mẽ của Unity để tạo ra hiệu ứng súng bắn lửa đầy ấn tượng.
Mục lục
Tạo project mới
- Chọn HDRP hoặc URP
- Vào Window -> Package Manager, tìm Visual Effect Graph và cài đặt
Cài đặt gói súng
- Tải gói súng từ Unity Asset Store: Turreta – Unity Asset
- Đưa súng vào Prefabs, nếu bị lỗi màu hồng, vào Edit -> Rendering -> Materials -> Convert All Built-in Materials to HDRP
Tạo hiệu ứng VFX
Tạo VFX mới
- Click chuột phải vào nòng súng
- Chọn Visual Effects -> Visual Effects để tạo hiệu ứng mới
- Trong Inspector, mục Visual Effect -> Asset Template, chọn New
- Chọn Minimal, nhấn Create, đặt tên và lưu vào thư mục
Thiết lập các thông số
- Spawn: Thêm khối Constant Spawn Rate, đặt giá trị 32
- Capacity: Đặt số lượng hạt 250
- Initialize Particle:
- Thêm Set Velocity Random Per Component, điều chỉnh thông số
-
- Thêm Set Lifetime Random Uniform, cài đặt giá trị phù hợp
- Update Particle: tạm thời bỏ trống
- Output Particle: Chọn Main Texture -> Default Particle
Điều chỉnh hướng bắn của hạt
- Chỉnh lại Set Velocity Random Per Component để đảm bảo hạt bắn ra từ nòng súng
Một vấn đề phát sinh khi ta chọn súng và thử xoay nó thì tia đạn bay theo hướng nòng súng, tuy nhiên các viên đạn đã rời khỏi nòng vẫn di chuyển theo hướng của nòng súng. Đó là do ta đang cho các hạt di chuyển theo không gian cục bộ (Local).
- Đặt chế độ World thay vì Local để hạt giữ hướng bay sau khi ra khỏi nòng súng
- Thêm Set Position và Get Target Position để cố định vị trí xuất phát của hạt
- Tạo 1 khối mới tên Set Position
-
- Tạo một node mới bên ngoài loại Get Target Position và nối TargetPosition vào Position của khống Set Position. Điều này nghĩa là vị trí bắt đầu của các hạt là từ lấy từ vị trí hiện tại của đối tượng.
-
- Trong khối set Position ta lại chỉnh nó về Local
Đến đây các hạt đã bắn ra đúng theo đầu súng, và khi xoay súng, các hạt mới sẽ theo đầu súng nhưng các hạt cũ đã bay ra thì vẫn theo quán tính đúng của riêng mình
Cải thiện hiệu ứng
- Set Lifetime Random Uniform: Thay đổi giá trị 2, 4 để điều chỉnh thời gian tồn tại của hạt
- Set Velocity Over Life: Đặt Composition: Multiply, chỉnh độ cong để tạo hiệu ứng bay thực tế hơn
Nhấn vào đường xanh Velocity và chỉnh nó cong xuống kiểu như sau:
- Soft Particle: Chỉnh Blend Mode: Additive, Soft Particle Fade Distance: 0.001
- Kích thước hạt:
- Multiply Size Random Uniform: Đặt A:2, B:5
Inspector chọn mục Composition: Multiply
-
- Multiply Size Over Life: Chỉnh độ cong để tạo hiệu ứng tỏa ra
Chọn vào size và chỉnh size cong cao lên để có các hạt tỏa ra như hình:
Tuy nhiên, khi ta xoay góc nhìn đối tượng ta sẽ thấy các hạt bị bẹp dí ở góc nhìn khác.
- Giữ hình dạng khi xoay góc nhìn: Thêm Orient: Face Camera Plane
- Tạo hiệu ứng màu sắc:
- Set Color Over Life
-
- Thêm Gradient từ Blackboard, chọn dải màu phù hợp và liên kết với Set Color Over Life
Mở hộp Blackboard, nhấn dấu +, Property -> Gradient.
Nhấn vào Value và tạo ra màu Gradient.
Kéo Gradient ra và nối nó vào color của Set Color Over Life như hình để thấy kết quả.
Bằng cách áp dụng các bước trên, bạn đã có thể tạo được hiệu ứng súng bắn lửa bằng VFX Graph trong Unity. Công cụ này mang lại hiệu suất cao và khả năng tùy chỉnh mạnh mẽ, giúp tạo ra các hiệu ứng hình ảnh sinh động cho game. Hy vọng bài viết này sẽ hỗ trợ các bạn trong việc học tập và phát triển kỹ năng lập trình game. Chúc các bạn thành công!
Giảng viên Nguyễn Đỗ Anh Khoa
Bộ môn Công nghệ thông tin
FPT Polytechnic Hồ Chí Minh