Estou tentando criar uma explosão de bomba em Farseer. Eu criei um círculo para a bomba. No entanto, se a bomba explodir, os objetos (corpos) ao seu redor devem voar para longe porque são empurrados para trás pela enorme força da explosão. Não sei ao certo como criar essa força - como posso fazer isso?
xna
c#
farseer-physics-engine
Homer_Simpson
fonte
fonte
Respostas:
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:
Contras:
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:
Contras:
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:
Contras:
fonte
normalize(object - center)
.(object - center).length
Quanto ao cálculo da magnitude com a qual você pode começar com uma queda linear simples, vá para outras fórmulas se não gostar dos resultados.
fonte