Я пытаюсь создать взрыв бомбы в Farseer. Я создал круг для бомбы. Однако, если бомба взорвется, предметы (тела), которые находятся вокруг нее, должны улететь, потому что они оттеснены огромной силой взрыва. Я не уверен, как создать эту силу, хотя - как я могу это сделать?
xna
c#
farseer-physics-engine
Гомер Симпсон
источник
источник
Ответы:
Я бы порекомендовал проверить страницу взрыва iforce2d . Он отлично справляется с различными способами обработки взрывов с компромиссом между производительностью и точностью. Это идет по 3 методам, которые я суммирую здесь. Так что это просто я суммирую информацию, которую я нашел во время исследования, и ни одна из них не является моей собственной работой.
Также вы хотите применить импульсы здесь не силы. Чтобы понять, зачем читать это .
Метод близости
Это тот же метод, который Byte56 использует в своем ответе. Концепция проста. Имейте точку взрыва и применяйте импульс в противоположном направлении от точки, который воздействует на все объекты с силой, основанной на их расстоянии.
Плюсы:
Минусы:
Метод Raycast
Это достаточно просто, отбрасывайте лучи от источника вашего взрыва и применяйте импульсы, когда они сталкиваются в объект с импульсом, продиктованным расстоянием.
Плюсы:
Минусы:
Метод частиц
Мой личный фаворит. Подобно методу RaySasting, но вместо лучей вы используете физический движок и выплевываете маленькие шарики, которые взаимодействуют с вашей сценой.
Плюсы:
Минусы:
источник
normalize(object - center)
.(object - center).length
Что касается вычисления величины, вы можете начать с простого линейного спада, а затем перейти к другим формулам, если вам не нравятся результаты.
источник