Estoy tratando de crear una explosión de bomba en Farseer. Creé un círculo para la bomba. Sin embargo, si la bomba explota, los objetos (cuerpos) que la rodean deberían volar porque la enorme fuerza de la explosión los empuja hacia atrás. Sin embargo, no estoy seguro de cómo crear esa fuerza: ¿cómo puedo hacerlo?
xna
c#
farseer-physics-engine
Homero Simpson
fuente
fuente
Respuestas:
Recomendaría revisar la página de explosión iforce2d . Hace un gran trabajo al repasar las diversas formas de manejar explosiones con las compensaciones de rendimiento versus precisión. Se trata de 3 métodos que resumiré aquí. Así que este es simplemente un resumen de la información que encontré mientras investigaba y nada de eso es mi propio trabajo.
También desea aplicar impulsos aquí, no fuerzas. Para entender por qué leer esto .
El método de proximidad.
Este es el mismo método que Byte56 repasa en su respuesta. El concepto es simple. Tenga un punto de explosión y aplique un impulso en la dirección opuesta lejos del punto que afectará a todos los objetos con una fuerza basada en su distancia.
Pros:
Contras:
El método de Raycast.
Este es bastante simple, expulsa rayos desde el origen de tu explosión y aplica impulsos cuando chocan contra un objeto con un impulso dictado por la distancia.
Pros:
Contras:
El método de partículas.
Mi favorito personal Similar al método RaySasting, pero en lugar de rayos, aprovecha el motor de física y escupe pequeños gránulos que interactúan con su escena.
Pros:
Contras:
fuente
normalize(object - center)
.(object - center).length
En cuanto al cálculo de la magnitud, puede comenzar con una caída lineal simple, luego pasar a otras fórmulas si no le gustan los resultados.
fuente