Pracuję z AndEngine z rozszerzeniem Box2d, ale doceniona zostanie również ogólna odpowiedź lub pomysł na koncepcję.
Mam podobne do piór obiekty w świecie 2D, które chcę brać udział w symulacji fizyki. Używam tłumienia liniowego, aby „pióro” opadało powoli. To może nie być dobry pomysł, może powinienem raczej zastosować siłę przy każdej aktualizacji, ale mimo to działa i sprawia, że obiekt wygląda na „lekki” i wydaje się, że jest powietrze z oporem.
Jak mogę sprawić, by przedmioty wyglądały jak pióra spadające w powietrze?
W szczególności szukam dwóch rodzajów obiektów: Długich o niskiej gęstości, które powinny poruszać się w dół powolnym ruchem wahadłowym i kwadratowych obiektów, które po prostu losowo zmieniłyby trajektorię. Byłoby wspaniale, gdyby mogła to być jedna symulacja, a długość byłaby parametrem - im dłuższy jest obiekt, tym bardziej się waha. Teraz chcę symulować pióra, liście i płatki śniegu w świecie kreskówek.
Odpowiedzi:
Podobnie jak lądowanie na Księżycu, powinieneś je sfałszować . Fizyka autorotacji wywołanej trzepotaniem, upadkiem i wirowaniem jest złożona. Są artykuły na temat symulacji tego efektu i produkują piękne animacje Java .
Ale poszedłbym nawet dalej w twoje oszustwo i wdrożyłbym coś w rodzaju rosnącej fali sinusoidalnej, aby ożywić ruch.
Oczywiście będziesz chciał dostosować wartości początkowe, tempo niezależnego wzrostu amplitudy i częstotliwości, aż uzyskasz coś, co wygląda bliżej tego, czego chcesz. Chcielibyście wrzucić trochę losowości, aby było interesująco. Dodatkowo, jak Twój przykład pokazuje, bardzo lekkie przedmioty o dużej powierzchni może faktycznie iść w górę w pobliżu krawędzi swoich fal. Tak więc fale powyżej pewnej amplitudy powinny zacząć uwzględniać wartość zamiatania, z małą maksymalną wartością graniczną.
Im mniejsza masa i więcej powierzchni ma obiekt, tym bardziej zwiększasz amplitudę i częstotliwość fali sinusoidalnej. Większa masa i mniejsza powierzchnia powinny skutkować spadkiem amplitudy i częstotliwości.
źródło