Hướng Dẫn Lập Trình Hiệu Ứng KHÓI SIÊU MƯỢT trong Scratch
Giới Thiệu: Tại Sao Hiệu Ứng Khói Lại Khó?
Lập trình hiệu ứng khói trong Scratch là một trong những thử thách thú vị nhất đối với người học. Khác với hiệu ứng mưa hay tuyết (chỉ cần rơi xuống), khói cần phải bay lên, lan tỏa ngẫu nhiên, chậm dần, và tan biến một cách mượt mà.
Trong bài viết này, chúng tôi sẽ hướng dẫn bạn chi tiết cách tạo ra một Hệ thống hạt (Particle System) chuyên nghiệp. Quan trọng hơn, chúng ta sẽ cùng nhau khiến hiệu ứng khói của bạn không bị giật cục và bay lên tự nhiên.
Phần 1: Thiết Lập Cơ Bản – Emitter (Bộ Phát Khói)
Phần nhân vật khói chịu trách nhiệm sinh ra các hạt khói liên tục. Chúng ta sẽ sử dụng nhân vật khói (Smoke Sprite) làm khuôn mẫu.
1.1 Khối lệnh Khởi động
Khối lệnh này chỉ chạy một lần khi chương trình bắt đầu.
Khi bấm vào [Lá cờ xanh](When Green Flag Clicked): Kích hoạt hệ thống.Ẩn(Hide): Bạn phải ẩn nhân vật gốc đi. Nhân vật gốc chỉ là khuôn mẫu; chúng ta chỉ muốn thấy các bản sao (Clones) của nó.
1.2 Vòng lặp Sinh ra Hạt
Khối Liên tục (Forever) đảm bảo luồng khói không bao giờ tắt.
Đặt [tốc độ] thành (lấy ngẫu nhiên từ 0.10 đến 0.40): Thiết lập tốc độ khởi điểm ngẫu nhiên cho mỗi hạt khói. Điều này tạo nên sự hỗn loạn tự nhiên.Đi tới điểm x: (-40 + lấy ngẫu nhiên 0 đến 20) y: (0 + lấy ngẫu nhiên 0 đến 10): Đặt vị trí xuất hiện (Spawn Point) trong một khu vực nhỏ, không phải một điểm duy nhất. Điều này giúp luồng khói dày và chân thực hơn.Tạo bản sao của [bản thân tôi](Create clone of myself): Sinh ra một hạt khói mới với các thuộc tính vừa được đặt.
Phần 2: Vật Lý Hạt Khói – Vòng Đời Của Clone
Đây là phần phức tạp nhất, nơi chúng ta điều khiển chuyển động, kích thước và sự tan biến của từng hạt khói.
2.1 Thiết lập Ban đầu của Hạt Khói
Khi tôi bắt đầu là một bản sao(When I start as a clone): Khối lệnh kích hoạt cho mỗi hạt khói vừa được sinh ra.Hiện(Show): Bắt đầu hiển thị hạt khói.Đặt kích thước thành (lấy ngẫu nhiên từ 60 đến 125) %: Kích thước ngẫu nhiên ngay từ đầu.Đặt hiệu ứng [Bóng ma] (Ghost) thành 85: Khói phải bắt đầu rất mờ (85% trong suốt) để tạo cảm giác tan vào không khí.
2.2 Vòng lặp Bay và Tan Biến
Chúng ta sử dụng vòng lặp Lặp lại 200 lần để quy định tuổi thọ của hạt khói.
| Khối lệnh | Ý nghĩa/Mục đích | Vật lý Mô phỏng |
Đặt [tốc độ] thành (tốc độ * 0.99) | Giảm tốc độ 1% sau mỗi vòng lặp. | Lực cản không khí (Friction) |
Di chuyển [tốc độ] bước | Đẩy hạt khói theo hướng ngẫu nhiên đã đặt. | Động năng |
Thay đổi y một lượng (lấy ngẫu nhiên 0.20 đến 1.75) | Luôn đẩy hạt khói lên trên một chút. | Lực nổi (Buoyancy) |
Thay đổi kích thước một lượng -0.5 | Làm hạt khói co lại/tan đi khi bay lên cao. | Tan biến |
Thay đổi hiệu ứng [Bóng ma] một lượng 0.125 | Tăng độ trong suốt dần dần (từ 85% lên 100%). | Sự Tan Biến (Fade Out) |
Thay đổi hiệu ứng [Độ sáng] một lượng 0.35 | Tăng độ sáng (tạo hiệu ứng khói trắng hơn). | Tương tác ánh sáng |
Xóa bản sao này(Delete this clone): Quan trọng! Giải phóng bộ nhớ sau khi hạt khói đã hoàn thành nhiệm vụ để tránh làm game bị chậm (lag).
Phần 3: Bí Mật Nâng Cao: FIX LỖI Biến Số PHỔ BIẾN
Đây là kiến thức quan trọng nhất giúp hiệu ứng của bạn từ “tạm được” thành “siêu mượt”.
Nếu bạn đặt biến tốc độ ở Sân khấu (Stage), nó sẽ trở thành Biến Toàn Cục (Global Variable).
❌ Vấn đề của Biến Toàn Cục (Global Variable)
- Khi bạn sử dụng biến Toàn Cục cho
tốc độ, tất cả các hạt khói (Clones) đều đang cùng nhau chia sẻ và thay đổi CHỈ MỘT giá trị tốc độ. - Hạt A đang giảm tốc độ của nó, nhưng ngay lập tức Hạt B lại thay đổi giá trị đó. Dẫn đến sự xung đột và khiến khói bay giật cục, thiếu logic.
✅ Giải pháp: Biến Cục Bộ (Local Variable)
Để lập trình hiệu ứng khói mượt mà, bạn phải tạo biến tốc độ và chọn tích vào ô “Chỉ dành cho nhân vật này” (For this sprite only).
- Ý nghĩa: Mỗi hạt khói (Clone) sẽ có một giá trị
tốc độriêng, không bị ảnh hưởng bởi các hạt khói khác.
Tóm Lược và Kêu Gọi Hành Động
Bạn đã hoàn thành việc lập trình hiệu ứng khói bằng kỹ thuật Scratch Particle System tiên tiến nhất! Giờ đây, các dự án game hay hoạt hình của bạn sẽ trở nên sống động và chân thực hơn bao giờ hết.
Bạn đã học được:
- Cách dùng Clone để tạo hạt.
- Cách sử dụng các khối lệnh vật lý (ma sát, lực nổi).
- Bí quyết chuyên gia để fix lỗi biến số (Global vs Local Variable).





