Một cách tương đối đơn giản để làm điều này là vẽ một tia từ tâm vụ nổ đến trung tâm của mọi thực thể trong đó DISTANCE(explosion,entity) < exlosion.max_radius
(mã giả).
Đối với mỗi thực thể, hãy theo dõi tia này, giảm sát thương cơ bản khi bạn đi. Bất cứ khi nào bạn chạm vào một vật thể trừ đi giá trị che phủ của nó khỏi thiệt hại (về cơ bản là rút ngắn tia).
Khi tia chiếu vào thực thể, bất kỳ thiệt hại nào còn lại là thiệt hại vụ nổ của bạn.
Đối với phương pháp này, bạn có thể muốn một sát thương cơ bản khá cao giảm nhanh theo khoảng cách (tỷ lệ nghịch với bình phương của khoảng cách nên làm tốt).
Một cách tiếp cận khác là vẽ một khu vực chứa đầy đủ thực thể; nhưng không rộng hơn; và tất cả các cách ra .max_radius
. Trừ đi khỏi khu vực của khu vực này, khu vực được bao phủ bởi bất kỳ lớp phủ nào giữa vụ nổ và thực thể, nhân với giá trị che phủ của nó. Khu vực còn lại là thiệt hại vụ nổ của bạn.
Một tác dụng phụ của việc này là thực thể càng gần vụ nổ, khu vực đó càng rộng và bạn càng chịu nhiều thiệt hại (khi bạn đếm tất cả các khu vực của khu vực, và chỉ trừ đi diện tích che phủ giữa thực thể và vụ nổ.
Nó cũng có thể hữu ích để coi vỏ bọc là các thực thể; và chỉ đơn giản là trừ đi thiệt hại do các thực thể gần hơn từ những người khác tiến ra, nhưng điều đó có thể trở nên sởn gai ốc.
Chắc chắn tồn tại một cách tiếp cận thậm chí thanh lịch và thông minh hơn, nhưng nó có thể đòi hỏi một số tính toán khá khó chịu. Nó luôn luôn làm.