2011-08-08 18 views
6

Próbuję umieścić bombę w pewnym miejscu, a kiedy eksploduje, wszystko wokół niej odleci, a prędkość zależy od tego, jak blisko obiektu do bomby. coś takiego, jak czarny ptak wybucha w zły ptaków.Jak animować eksplozję, która zdmuchuje otaczające ciała?

może ktoś dać mi przykładowy kod lub sposób, aby to zrobić (używam AndEngine z Box2D)

dziękuję

+3

Przez chwilę byłem zmartwiony – snowflakekiller

+1

powinieneś zmienić pytanie, więc wskazuje na bardziej odpowiednie programowanie –

+0

Istnieje wiele sposobów na zrobienie tego. Oto kilka interesujących dyskusji: http://box2d.org/forum/viewtopic.php?f=3&t=1688 – iforce2d

Odpowiedz

7

Jeśli to ma być realistyczny (owski), jak Angry Birds , a następnie dla każdego obiektu, który jest rozerwany przez bombę, będzie podążać po kwadratowej ścieżce.

Nie wiem andengine lub box2d. Ale w grze zrobiłem proste 2d modele eksplozji i pocisków. Mam nadzieję, że możesz wziąć coś z następującego:

Chciałbyś dowiedzieć się, jaka jest odległość (x, y) obiektu od bomby. Z tego obliczyć kąt. (na przykład obiekt nad bombą, która eksploduje, będzie miał kąt 90 lub pi/2.

Z tego co wyliczymy sin i cos kąta, pomnożyć przez pewien czynnik siły F. (zależny syn siła bomba i odległość obiektu od bomby). Z tego masz swój początkowy wektor ruchu {F * Math.cos (kąt), F * Math.sin (kąt)};

Stąd jest to tylko samolot . kinematyka obiekt powinien podążać ścieżką kwadratowego przez powietrze równania może wyglądać następująco:.

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. 

prawdopodobnie trzeba dodać jakieś odlewy tam w zależności od typów będziesz używać. Wszystkie stałe zależą od twojej gry. time_constant może być równy 1, ale stwierdziłem, że zrobienie wielokrotności 1 spowodowało, że eksplozja stała się bardziej atrakcyjna wizualnie. tj. w miarę wzrostu licznika czasu t ruch obiektu może wykorzystywać time_constant 0.5. Użyłem wielu prób i błędów, aby sprawdzić, które wartości stałe działały najlepiej.