Próbuję stworzyć wybuch bomby w Farseer. Utworzyłem okrąg dla bomby. Jeśli jednak bomba wybuchnie, otaczające ją obiekty (ciała) powinny odlecieć, ponieważ są odpychane przez ogromną siłę eksplozji. Nie jestem jednak pewien, jak stworzyć tę siłę - jak to zrobić?
xna
c#
farseer-physics-engine
Homer Simpson
źródło
źródło
Odpowiedzi:
Polecam sprawdzić na stronie eksplozja iforce2d . Świetnie sobie radzi, analizując różne sposoby radzenia sobie z eksplozjami z kompromisami między wydajnością a dokładnością. Omówiono tu 3 metody, które tutaj streszczę. Więc to po prostu podsumowuję informacje, które znalazłem podczas badań i żadna z nich nie jest moją własną pracą.
Również tutaj chcesz zastosować impulsy, a nie siły. Aby zrozumieć, dlaczego czytać tego .
Metoda bliskości
Jest to ta sama metoda, którą Byte56 omawia w swojej odpowiedzi. Pomysł jest prosty. Posiadaj punkt wybuchu i przyłóż impuls w przeciwnym kierunku od punktu, który wpłynie na wszystkie obiekty z siłą zależną od ich odległości.
Plusy:
Cons:
Metoda Raycast
Ten jest dość prosty, wyrzuć promienie z miejsca wybuchu i zastosuj impulsy, gdy zderzą się z przedmiotem pod wpływem odległości pod wpływem impulsu.
Plusy:
Cons:
Metoda cząstek
Mój osobisty faworyt. Podobne do metody RaySasting, ale zamiast promieni wykorzystujesz silnik fizyki i wypluwasz małe granulki, które wchodzą w interakcje z twoją sceną.
Plusy:
Cons:
źródło
normalize(object - center)
.(object - center).length
Jeśli chodzi o obliczanie wielkości, możesz zacząć od prostego liniowego spadku, a następnie przejdź do innych formuł, jeśli nie lubisz wyników.
źródło