SimianVirus7 Opublikowano 23 Lutego 2017 Udostępnij Opublikowano 23 Lutego 2017 Witam. Od wczoraj męczę się z pewnym problemem (nie mów :V). Chciałbym zrobić rękę podążającą za kursorem. Jest ona podzielona na trzy części: ramię, ręka1 (do łokcia), ręka2 (od łokcia, wraz z dłonią). Próbowałem to zrobić jointami i coś tam w miarę wychodziło, ale nie do końca (wszystko już usunąłem). Chciałem to zrobić tak: Ramię - statyczne Ręka1 - swobodna lewitacja, oddziaływuje na nią grawitacja Ręka2 - podąża za kursorem Umieszczam gify, które mogą nieco rozjaśnić mój tok myślenia (,bo niewielu ludzi potrafi go ogarnąć) LEGENDA: Ramię - czarne Ręka1 - zielona Ręka2 - niebieska Połączenia jointów - pomarańczowa PS: Wiem, że programista powinien potrafić logicznie myśleć, ale u mnie trochę z tym ciężko :| Próbowałem też trochę lengthdirami, ale wychodziło średnio. Bawiłem się jointami pierwszy raz w życiu, więc mogę trochę nie ogarniać. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 23 Lutego 2017 Udostępnij Opublikowano 23 Lutego 2017 Nie mam pomysłu jak to zrobić do niczego mi nie było to nigdy potrzebne. Ale to co chcesz zrobić nazywa się inverse kinematics i pod takimi hasłami googluj. Jakieś algorytmy matematyczne powinieneś znaleźć. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SimianVirus7 Opublikowano 23 Lutego 2017 Autor Udostępnij Opublikowano 23 Lutego 2017 Skoro taki człowiek jak I am Lord, mówi, że nie ma na to żadnego pomysłu, to wiem, że czas zrezygnować z tego pomysłu. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 23 Lutego 2017 Udostępnij Opublikowano 23 Lutego 2017 Po prostu dupa z fizyki jestem ;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 23 Lutego 2017 Udostępnij Opublikowano 23 Lutego 2017 IK to nie jest prosty temat, więc lepiej IMO, jeśli będzie trzymał się opcji z fizyką. Ale jakby OP jednak chciał się zagłębić, podrzucam dokument o tym jak to liczyć: http://math.ucsd.edu/%7Esbuss/ResearchWeb/...ds/iksurvey.pdf Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Ignatus Opublikowano 23 Lutego 2017 Udostępnij Opublikowano 23 Lutego 2017 Piszesz o jointach więc chyba używasz wbudowanej fizyki w GM? Jeżeli tak to jest to bardzo proste,robiłem coś podobnego w moim KNAP!.Jeżeli nie używasz BOX2D to czarna magia;p Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ediepl Opublikowano 23 Lutego 2017 Udostępnij Opublikowano 23 Lutego 2017 Toż to proste jest kruca, lengthdir'ami się pobaw, ew jutro dam Ci kod bo teraz w robocie jestem :( Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ediepl Opublikowano 24 Lutego 2017 Udostępnij Opublikowano 24 Lutego 2017 Dość uproszczone, ale łatwo rozwinąć ;) sprite0 - czarny kwardat origin center. sprite1 - zielony prostokąt origin x-0 y-środek sprite2 - niebieskii prostokąt origin x-0 y-środek GML var rot1, rot2, xx, yy; draw_sprite(sprite0, 0, x, y); rot1 = point_direction(x, y, mouse_x, mouse_y); rot1 -= max((sprite_get_width(sprite1)+sprite_get_width(sprite2)) - point_distance(x, y, mouse_x, mouse_y), 0) draw_sprite_ext(sprite1, 0, x, y, 1, 1, rot1, c_white, 1); xx = x + lengthdir_x(sprite_get_width(sprite1), rot1); yy = y + lengthdir_y(sprite_get_width(sprite1), rot1); rot2 = point_direction(xx, yy, mouse_x, mouse_y); draw_sprite_ext(sprite2, 0, xx, yy, 1, 1, rot2, c_white, 1); Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Filar Społeczności Czołg Krymski Opublikowano 24 Lutego 2017 Filar Społeczności Udostępnij Opublikowano 24 Lutego 2017 ja jeszcze może podeślę swój przykład, chociaż to taka łopatologia i tak dalekie od ideału, że aż wstyd https://gmclan.org/up7193_4_rami_.html Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SimianVirus7 Opublikowano 24 Lutego 2017 Autor Udostępnij Opublikowano 24 Lutego 2017 Ooo, dziękuje za odpowiedzi. Nie miałem czasu, żeby tu wpaść, a widzę, że ruch spory w tym poście. Jak przysiądę na trochę dłużej do gm'a, to napisze, co mi się udało naskrobać. Dziękuje jeszcze raz za odpowiedzi. Najbardziej spodobało mi się rozwiązanie ediegopl, co nie znaczy, że inne odpowiedzi się nie przydały. Dzięki jeszcze raz, miło znowu wrócić na to forum. PS: Tak, rozwiązałem mój problem ;) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto
Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.
Zarejestruj nowe konto
Załóż nowe konto. To bardzo proste!
Zarejestruj sięZaloguj się
Posiadasz już konto? Zaloguj się poniżej.
Zaloguj się