Eu recomendaria verificar a página iforce2d de explosão . Ele faz um ótimo trabalho abordando as várias maneiras de lidar com explosões com as compensações de desempenho versus precisão. Ele aborda três métodos que vou resumir aqui. Portanto, sou simplesmente eu resumindo as informações que encontrei durante a pesquisa e nenhuma delas é meu próprio trabalho.
Também você deseja aplicar impulsos aqui, não forças. Para entender por que ler isso .
O método de proximidade
Este é o mesmo método que Byte56 repassa em sua resposta. O conceito é simples. Tenha um ponto de explosão e aplique um impulso na direção oposta, longe do ponto que afetará todos os objetos com uma força baseada na distância deles.
Prós:
- Muito rápido
- Fácil de codificar.
Contras:
- Explosões passam por objetos imóveis e corpos estáticos.
- Os objetos que estão na área de influência da explosão podem ser pulados se você apenas verificar a distância do centro de massa.
- A área da superfície não é levada em consideração.
- Tudo é afetado de uma só vez.
O método Raycast
Este é bastante simples, lança raios da origem da sua explosão e aplica impulsos quando colidem em um objeto com um impulso ditado pela distância.
Prós:
- Menos desempenho que o método dos projéteis.
- Explosão bloqueada por objetos.
- Superfície levada em consideração.
Contras:
- Tudo é afetado de uma só vez.
- Quanto maior a explosão, mais raios você precisa para garantir que a explosão afeta tudo.
- Mais desempenho intensivo que o método de proximidade.
O método de partículas
Meu favorito pessoal. Semelhante ao método RaySasting, mas em vez de raios, você utiliza o mecanismo de física e cospe pequenos pellets que interagem com sua cena.
Prós:
- Extremamente fácil em termos de código. Gere as bolas e aplique um impulso a cada uma. Você não tem código para escrever por tick. Basta ter um cronômetro que apague e desative / redefina os corpos após a explosão ser concluída.
- A explosão é bloqueada por objetos.
- A área da superfície é levada em consideração.
- A explosão reflete fora das superfícies.
- Objetos mais afastados da explosão respondem a ela mais lentamente.
- Você pode usar as bolas como base para gerar parciais, permitindo que seus efeitos reflitam com precisão o impacto das explosões.
Contras:
- Adiciona complexidade por tick.