Tôi sử dụng một hệ thống hạt đơn cho từng loại hiệu ứng. Vì vậy, một cho một hiệu ứng lửa, một cho một lấp lánh, một cho một vụ nổ, vv
Tôi sử dụng một danh mục để thêm [enable] và [disable] phương pháp cho các hệ thống hạt Cocos2D cơ sở như sau:
ParticleEnhancement.h
#include "cocos2d.h"
@interface CCParticleSystem (particleEnhancement)
-(void)enable;
-(void)disable;
@end
ParticleEnhancement.m
#import "ParticleEnhancement.h"
@implementation CCParticleSystem (particleEnhancement)
-(void)enable {
active = YES;
elapsed = 0.0f;
}
-(void)disable {
active = NO;
}
@end
Sau đó, khi tôi muốn kích hoạt nó, tôi chỉ cần đặt vị trí và gọi cho phép. Hệ thống hạt sẽ sinh ra một loạt các hạt dựa trên các thiết lập khởi tạo. Hệ thống có thể được kích hoạt nhiều lần ở các vị trí khác nhau và các hạt được tạo ra trước đây sẽ hoạt động đúng.
Điều chính cần xem xét là bạn sẽ cần một ngân sách hạt lớn hơn để giải thích cho nhiều trường hợp của một hiệu ứng đã cho bằng cách sử dụng một hệ thống duy nhất.
Ngoài ra, điều này làm việc cho các hiệu ứng "kích hoạt", như một vụ nổ nhưng có thể không hoạt động tốt cho một hiệu ứng chạy dài như đường mòn khói, tôi chưa thực sự thử nghiệm điều đó.
Tôi thích làm theo cách này bởi vì nó có nghĩa là tôi có ít hệ thống hạt hơn để xoay sở và tôi không phải đối phó với việc thiết lập một nhóm hệ thống hạt. Bản thân hệ hạt cũng là một công việc tốt để xử lý một nhóm các hạt, không cần sao chép lại một lần nữa ở mức hệ thống.
Kỹ thuật này đang được sử dụng trong ứng dụng của tôi TCG Counter cho tất cả các hiệu ứng hạt.
Tôi đoán câu hỏi này quá cụ thể. Tôi sẽ hỏi những người sáng tạo của Cocos2d. –
mọi người đã giải quyết vấn đề này chưa? Đó là cách tốt nhất để làm như vậy? – mm24