Game C++ SDL – Bài 12: Xử lý hiệu ứng vụ nổ
Chào mừng các bạn đến với chủ đề học lập trình game c++ SDL.
Bài số 12 chúng ta sẽ tìm hiểu về kỹ thuật xử lý vụ nổ trong lập trình game c++
Hiệu ứng vụ nổ được xử dụng nhiều trong game, ví dụ như:
+ Va chạm giữa hai đối tượng => vụ nổ được áp dụng.
+ Vụ nổ được đặt hẹn giờ nhằm tiêu hao sức mạnh đối tượng
Và bất kỳ một ý tưởng nào bạn nghĩ ra.
1. LÝ THUYẾT CƠ BẢN.
Xây dựng một lớp đối tượng đại diện cho vụ nổ.
Các đặc điểm của Explosion.
+ Cũng được kế thừa từ basic object
+ Có tính chất đặc biệt hơn, khi sử dụng kỹ thuật frame và clips.
+ Có một hàm show riêng đặc biệt hơn.
Frame là gì và Clips là gì.
Frame được hiểu đơn giản là một hình ảnh được load trong một đơn vị thời gian.
Clips là một tập hợp bao gồm nhiều frame khác nhau được load.
Nếu trong 1 đơn vị thời gian. 1 clip được thực hiên, thì sẽ tạo ra hiệu ứng:
Một số lượng frame load trong một đơn vị thời gian, và tạo ra hiệu ứng ảnh động, giống như nguyên lý làm phim 24 hình/s
Đây là một hình ảnh. Và hình ảnh này được chia làm 4 frame, mỗi frame là một vụ nổ có hình dạng khác nhau.
Và một clip sẽ chưa cả 4 frame trên. Khi một clip được thực hiện, cả 4 frame được load lần lượt sẽ tạo hiệu ứng động.
Vụ nổ sẽ xảy ra từ bé đến lớn và kết thúc. Khi time thực hiện quá nhỏ thì, chúng ta sẽ khó phát hiện được sự rời rạc giữa việc chuyển các frame
II. Các step cơ bản:
1. Khởi tạo và định nghĩa ớp ExplosionObject
2. Khai báo một đối tượng explosionObject bên hàm main.
Ở đây tôi dùng 2 vụ nổ cho main và threats. Gọi hàm load image.
g_name_ex…. Chính ta biến char[] chứa tên file hình ảnh
3. Xử lý vụ nổ trong phần kiểm tra va chạm giữa main và threats
+ Khi điều kiện va chạm là xảy ra. Thực hiện load liên tục 4 frame
+ Lần lượt set frame từ 0 đến 3 và gọi hàm show. Hàm show sẽ liên tục load từng frame để show hình ảnh.
+ Có thể sử dụng delay 100 ms để kiểm chứng việc load frame từ 0 đến 3.
+ Phải sét xpos và ypos để xem vụ nổ xảy ra ở vị trí nào. Thường sẽ là vị trí của threats. Khi threats đâm vào main.
+ xpos và ypos sẽ là vị trí mép trên bên trên của hình ảnh vụ nổ. Do đó muốn xét nó tại tâm vụ nổ thì phải trừ đi width/2 và height/2
III. Thực Hành
Download ảnh vụ nổ tại đây: Click here
Thực hành cùng tôi với video sau:
__________________________________________________________
Pass Pham