Я рекомендую перевірити сторінку вибуху iforce2d . Він робить велику роботу, перетинаючи різні способи поводження з вибухами з продуктивністю порівняно з точністю. Це три способи, які я підсумую тут. Тож це просто мені узагальнення інформації, яку я знайшов під час дослідження, і жодна з них не є моєю власною роботою.
Також ви хочете застосувати тут імпульси, а не сили. Щоб зрозуміти, чому це читати .
Метод Близькості
Це той самий метод, який переймає Байт56 у своїй відповіді. Концепція проста. Майте точку вибуху і застосуйте імпульс у зворотному напрямку від точки, яка впливатиме на всі об'єкти силою залежно від їх відстані.
Плюси:
- Дуже швидко
- Легко кодувати.
Мінуси:
- Вибухи проходять через нерухомі предмети та статичні тіла.
- Об'єкти, що знаходяться в зоні впливу вибуху, можуть бути пропущені, якщо перевірити лише відстань до центру маси.
- Площа поверхні не враховується.
- На все це впливає відразу.
Метод Raycast
Цей досить простий, викидайте промені від походження вашого вибуху і подайте імпульси, коли вони стикаються в об’єкт із імпульсом, продиктованим відстані.
Плюси:
- Менш продуктивність, ніж метод снарядів.
- Вибух заблокований об'єктами.
- Врахована поверхня.
Мінуси:
- На все це впливає відразу.
- Чим більший вибух, тим більше променів потрібно, щоб переконатися, що вибух впливає на все.
- Інтенсивніша продуктивність, ніж метод близькості.
Метод Частинок
Мій особистий фаворит. Подібно до методу RaySasting, але замість променів ви використовуєте двигун фізики і виплетете невеликі гранули, які взаємодіють із вашою сценою.
Плюси:
- Надзвичайно простий код. Створіть кульки і застосуйте поштовх до кожної. У вас немає коду, який потрібно писати за галочку. Просто майте таймер, який працює, але вимикає / скидає тіла після вибуху.
- Вибух блокують об’єкти.
- Враховується площа поверхні.
- Вибух відбивається від поверхонь.
- Об'єкти далі від вибуху реагують на нього повільніше.
- Ви можете використовувати кулі як основу для отримання часток, що дозволяють вашим ефектам точно відображати вплив вибухів.
Мінуси:
- Додає складність за клік.