Я бы порекомендовал проверить страницу взрыва iforce2d . Он отлично справляется с различными способами обработки взрывов с компромиссом между производительностью и точностью. Это идет по 3 методам, которые я суммирую здесь. Так что это просто я суммирую информацию, которую я нашел во время исследования, и ни одна из них не является моей собственной работой.
Также вы хотите применить импульсы здесь не силы. Чтобы понять, зачем читать это .
Метод близости
Это тот же метод, который Byte56 использует в своем ответе. Концепция проста. Имейте точку взрыва и применяйте импульс в противоположном направлении от точки, который воздействует на все объекты с силой, основанной на их расстоянии.
Плюсы:
- Очень быстро
- Легко кодировать.
Минусы:
- Взрывы проходят через неподвижные объекты и статические тела.
- Объекты, которые находятся в зоне влияния взрыва, могут быть пропущены, если вы только проверите расстояние до центра масс.
- Площадь поверхности не учитывается.
- Все затронуто сразу.
Метод Raycast
Это достаточно просто, отбрасывайте лучи от источника вашего взрыва и применяйте импульсы, когда они сталкиваются в объект с импульсом, продиктованным расстоянием.
Плюсы:
- Менее производительный, чем метод метательных снарядов.
- Взрыв заблокирован объектами.
- Площадь поверхности учитывается.
Минусы:
- Все затронуто сразу.
- Чем больше взрыв, тем больше лучей нужно, чтобы взрыв повлиял на все.
- Более высокая производительность, чем метод близости.
Метод частиц
Мой личный фаворит. Подобно методу RaySasting, но вместо лучей вы используете физический движок и выплевываете маленькие шарики, которые взаимодействуют с вашей сценой.
Плюсы:
- Чрезвычайно простой код. Создайте шары и примените импульс к каждому. У вас нет кода, чтобы написать за тик. Просто имейте таймер, который отключает / сбрасывает тела после завершения взрыва.
- Взрыв заблокирован объектами.
- Площадь поверхности учитывается.
- Взрыв отражается от поверхностей.
- Объекты, находящиеся дальше от взрыва, реагируют на него медленнее.
- Вы можете использовать шары в качестве основы для генерации частичек, позволяющих вашим эффектам точно отражать воздействие взрыва.
Минусы:
- Добавляет сложности за тик.