2011-08-08 11 views
6

Estoy tratando de poner una bomba en algún lugar y cuando explota todo lo que la rodea volará y la velocidad depende de qué tan cerca esté el objeto de la bomba. algo así como cuando el pájaro negro explota en pájaros enojados.¿Cómo animar una explosión que aleja los cuerpos circundantes?

cualquiera puede dar un código de muestra o una manera de hacer eso (estoy usando andengine con Box2D)

gracias

+3

por un momento allí, estaba preocupado – snowflakekiller

+1

debe enmendar la pregunta por lo que señala a la programación más adecuada –

+0

Hay muchas maneras en que puede hacer esto. Algunas discusiones interesantes aquí: http://box2d.org/forum/viewtopic.php?f=3&t=1688 – iforce2d

Respuesta

7

Si va a ser realistas (más o menos), como Angry Birds , luego, para cada objeto que es volado por la bomba, seguirá un camino cuadrático.

No sé andengine o box2d. Pero hice un simple 2d de explosión y modelado de proyectiles en un juego. Espero que pueda tomar algo de lo siguiente:

Desearía averiguar la distancia coord (x, y) del objeto de la bomba. A partir de esto calcula el ángulo. (por ejemplo, un objeto encima de la bomba mientras explota tendrá ángulo 90 o pi/2.

De este trabajo saca el factor y el factor de fuerza del ángulo. Multiplica por algún factor de fuerza F. (depende de la fuerza de la bomba y la distancia del objeto de la bomba.) A partir de esto tiene su vector inicial de movimiento {F * Math.cos (ángulo), F * Math.sin (ángulo)};

A partir de aquí solo es plano . cinemática el objeto debe seguir un camino de segundo grado a través del aire las ecuaciones pueden ser algo como:.

object.setXCoord(object.getXCoord()+time_constant); //after initial explosion, no force is  
          //acting horizontally on object. 


object.setYCoord(object.getYCoord()-some_constant*time_constant+another_constant*time_constant*time_constant);// note Y's path 
                //relative to time is quardatic. 

es probable que necesite añadir algunos moldes allí dependiendo de qué tipos usarás. Todas las constantes dependen de tu juego. time_constant bien puede ser 1, pero descubrí que haciendo un múltiplo de 1 hacía que la explosión fuera más atractiva visualmente. es decir, a medida que su contador de tiempo t se incrementa, el movimiento del objeto puede usar time_constant 0.5. Utilicé muchas pruebas y errores para ver qué valores constantes funcionaban mejor.

Cuestiones relacionadas