2012-04-24 7 views
6

Zastanawiam się, jak piękna jest "Contre jour" dla IOS. Szczególnie lubię elastyczne "macki", pokazane w tym filmie na 2 minuty 20 sekund: http://www.youtube.com/watch?v=ptdTdJarWLwEfekty graficzne, takie jak elastyczne czułki w Contre Jour

Jak mogę wprowadzić takie efekty?

Wiem, że istnieje technika zwana "integracją Verleta", a nawet implementacja "liny verlet" do rysowania lin w cocos2d, ale jak zrobić takie fajne efekty sprężyste dla duszka "macki"?

Mam doświadczenie w stosowaniu box2D i mogę próbować wdrożyć fizykę do tego efektu, ale nie mogę znaleźć rozwiązania, jak narysować sprite z takim elastycznym morfowaniem.

Czy ktoś może mi pomóc lub podać wskazówki?

Po prostu wyjaśnienie technik, które mogą mi pomóc?

Mam trochę doświadczenia w opengl, wspaniałe doświadczenie cocos2d, więc planuję użyć cocos2d.

Przepraszamy za zły język angielski, mam nadzieję, będzie zrozumieć mój problem :)

Odpowiedz

9

Jeśli używasz box2d, można spróbować skręta odległość przy frequencyHz i opcji dampingRatio ustawiony na wartości inne niż domyślne. Być może dobrym punktem wyjścia będzie niska częstotliwość około 4-6, a tłumienie około 0,5-0,7. Możesz myśleć o częstotliwości, ile razy na sekundę staw próbuje skorygować dystans i tłumienie, jak dobrze odległość jest korygowana za każdym razem. Ustawienie tłumienia na wartość niższą niż 1 oznacza, że ​​połączenie będzie wolniejsze, aby skorygować odległość, i będzie miało sprężyste/gumowate zachowanie.

Jeśli chodzi o renderowanie, rzeczywiście można do tego celu użyć integracji z verletami. Weź dwa punkty zakotwiczenia stawu odległościowego jako punkty końcowe "liny", i umieść garść punktów (nie wygląda na to, że zbyt wiele byłoby konieczne) pomiędzy nimi w równomiernie rozmieszczonej linii. W każdym punkcie czasowym punkty pośrednie przesunie się w kierunku średniej z dwóch punktów po obu stronach siebie. Możesz sprawić, że lina będzie bardziej zwarta lub luźniejsza, dostosowując odległość między punktami do pozycji docelowej za każdym razem.

Ostateczny rendering tekstur/ikonek będzie wówczas zajmował swoją pozycję z bieżącej lokalizacji punktów verlet.

+0

Zobacz także przykład "Web" w panelu testowym Box2D. – iforce2d