Bunu yapmanın nispeten basit bir yolu, patlamanın merkezinden DISTANCE(explosion,entity) < exlosion.max_radius
(sözde kod) her varlığın merkezine bir ışın çizmektir .
Her varlık için, bu ışını takip edin ve gittiğinizde taban hasarını azaltın. Bir nesneyi vurduğunuzda hasar değerini kapaktan çıkartın (esas olarak ışını kısaltın).
Işın objeye çarptığında, kalan hasar ne olursa olsun patlama hasarınızdır.
Bu yaklaşım için, muhtemelen mesafe ile hızla azalan oldukça yüksek bir taban hasarı istiyorsunuz (mesafenin karesiyle ters orantılı olarak iyi yapmalıdır).
Diğer bir yaklaşım, işletmeyi tamamen içeren bir sektör çizmektir; ama daha geniş değil; ve tüm çıkış yolu .max_radius
. Patlama ile işletme arasındaki herhangi bir teminatın kapsadığı alanın, teminat değeri ile çarpılarak bu sektörün alanından çıkarılması. Kalan alan patlama hasarınızdır.
Bunun düzgün bir yan etkisi, işletmenin patlamaya ne kadar yakın olması, sektörün o kadar genişlemesi ve daha fazla hasar almanızdır (sektörün tüm alanını saydığınızda ve sadece varlık ve patlama.
Örtüyü varlık olarak ele almak da yararlı olabilir; ve sadece daha yakın varlıklar tarafından alınan hasarları daha fazla olanlardan çıkarın, ama bu gnarly olabilir.
Kuşkusuz daha da zarif ve akıllı bir yaklaşım var, ama muhtemelen oldukça kötü bir hesap gerektiriyor. Her zaman olur.