Matrix_ Opublikowano 2 Lipca 2014 Udostępnij Opublikowano 2 Lipca 2014 Witam, od pewnego czasu próbuję stworzyć ręce, które są "luźne". Po prostu żeby nie były sztywne jak u zombie. Tylko przy każdym ruchu bohatera robiły naturalistyczne przemieszczenia. Tak jak tutaj: Mógłby ktoś podać jakiś przykład czy pomóc ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 2 Lipca 2014 Udostępnij Opublikowano 2 Lipca 2014 to jest interpolacja + animacja szkieletowa Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Matrix_ Opublikowano 2 Lipca 2014 Autor Udostępnij Opublikowano 2 Lipca 2014 to jest interpolacja + animacja szkieletowa Animacja szkieletowa no to kapuje. Zrobić 3 (na początek) sprity, połączyć kodowo, żeby każdy miał swoje direction itp. A ta interpolacja ? [edit] rozciągnięcia ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 2 Lipca 2014 Udostępnij Opublikowano 2 Lipca 2014 Interpolacja to funkcja lerp(): GML wygadzona_pozycja = lerp(pozycja_startowa, pozycja_koncowa, stopien_wygladzenia); To jest interpoacja liniowa (wygładzenie). Stopień wygładzenia to wartość z zakresu 0-1 Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Matrix_ Opublikowano 2 Lipca 2014 Autor Udostępnij Opublikowano 2 Lipca 2014 Interpolacja to funkcja lerp(): GML wygadzona_pozycja = lerp(pozycja_startowa, pozycja_koncowa, stopien_wygladzenia); To jest interpoacja liniowa (wygładzenie). Stopień wygładzenia to wartość z zakresu 0-1 Czyli zrobić animację szkieletową, przy kazdym ruchu zmiana kierunku danych części ciała A to wszystko trzeba wygładzić interpolacją ? [edit] A już kapuje, interpolacja tu jest potrzebna żeby nie było przeskakiwania o kilka pixeli tylko płynne przejście ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 2 Lipca 2014 Udostępnij Opublikowano 2 Lipca 2014 Tak Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Matrix_ Opublikowano 2 Lipca 2014 Autor Udostępnij Opublikowano 2 Lipca 2014 Tak Dzięki, a jaki program ( darmowy )polecacie do animacji szkieletowej, bo ja na jakimś no-name tworzę. Anime Studio chyba jakoś tak to się nazywało, warto w tym pracować ? [edit] tylko że nie jest darmowe :/] Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 2 Lipca 2014 Udostępnij Opublikowano 2 Lipca 2014 Skleiłem ci przykład jak używać interpolacji. Pokazuję tutaj jak przesunąć płynnie kulkę z jednego punktu do drugiego https://gmclan.org/up539_4_Interpolacja_gmx.html LPM rusza kulką scroll ustawia siłę interpolacji Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Amaterasu Opublikowano 2 Lipca 2014 Udostępnij Opublikowano 2 Lipca 2014 Jak jesteś hardkorem, to możesz nawet w Notatniku Jakbym ja miał robić animacje szkieletowe, to albo napisałbym sobie własny edytor, albo skorzystał z Blendera i ignorował jeden z wymiarów. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Matrix_ Opublikowano 2 Lipca 2014 Autor Udostępnij Opublikowano 2 Lipca 2014 Skleiłem ci przykład jak używać interpolacji. Pokazuję tutaj jak przesunąć płynnie kulkę z jednego punktu do drugiego https://gmclan.org/up539_4_Interpolacja_gmx.html LPM rusza kulką scroll ustawia siłę interpolacji To jest podobne do funkcji friction Jak jesteś hardkorem, to możesz nawet w Notatniku Jakbym ja miał robić animacje szkieletowe, to albo napisałbym sobie własny edytor, albo skorzystał z Blendera i ignorował jeden z wymiarów. To powiedz jak zrobić taki edytor, jak tak pomysłem błysnąłeś... [eidt] tylko że w friction kończy się jak speed się skończy, a tu jak dojdzie do celu Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Matrix_ Opublikowano 2 Lipca 2014 Autor Udostępnij Opublikowano 2 Lipca 2014 Interpolacja tez działa w draw_sprite ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PsichiX Opublikowano 2 Lipca 2014 Udostępnij Opublikowano 2 Lipca 2014 interpolacja to po prostu plynna zmiana wartosci wynikowej wzgledem wartosci wejsciowej (najczesciej czasu), wiec tak - dziala na wszystkim, bo twoja wartoscia wynikowa jest na przyklad rotacja. btw. wiesz co oznacza naturalizm, right? :> Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Matrix_ Opublikowano 2 Lipca 2014 Autor Udostępnij Opublikowano 2 Lipca 2014 interpolacja to po prostu plynna zmiana wartosci wynikowej wzgledem wartosci wejsciowej (najczesciej czasu), wiec tak - dziala na wszystkim, bo twoja wartoscia wynikowa jest na przyklad rotacja. btw. wiesz co oznacza naturalizm, right? :> Thx, No naturalizm to coś zgodnego naturą :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Amaterasu Opublikowano 2 Lipca 2014 Udostępnij Opublikowano 2 Lipca 2014 To powiedz jak zrobić taki edytor, jak tak pomysłem błysnąłeś... 1. Stwórz listę, w której będziesz przechowywał indeksy załadowanych grafik 2. Stwórz strukturę danych, w której będziesz przechowywał dane nt. kości (czyli ID obiektu-kości, ID parenta kości) oraz zapisz w każym obiekcie-kości dane nt. jej graficznej reprezentacji (np. sprite kości, długość kości, kierunek, w którym kość jest skierowana) 3. Stwórz zestaw funkcji, które pozwolą ci na edycję danych nt. kości w trybie graficznym (przeciąganie kości, zmiana jej rozmiaru, dodawanie/usuwanie kości) 4. Stwórz key editor, czyli obiekt, który pozwoli ci na zapisywanie i edycję informacji nt. animacji kości (m. in. ilość klatek animacji, zapis matematyczny każdej kości w każdej klatce, typy interpolacji dla każdej kości) 5. Stwórz możliwość zapisania animacji w takim formacie, aby mogła z niej korzystać twoja gra w czasie rzeczywistym I tyle, jeśli chodzi o najważniejsze elementy : ) Interpolacja tez działa w draw_sprite ? draw_sprite przyjmuje za argumenty pozycje X i Y, to, w jaki sposób modyfikujesz te pozycje zależy tylko od ciebie. Czyli, interpolacja działa. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Exigo Opublikowano 2 Lipca 2014 Udostępnij Opublikowano 2 Lipca 2014 Odpowiadając na twoje pierwsze pytanie: Dodawaj różnicę między kątem postaci a kątem ręki po czym przemnóż przez jakąś wartość. Problem leży w wyliczeniu tej różnicy - trzeba usunąć przeskok między kątem 360 do 0. Wygrzebałem tą funkcję z moich code snippets-ów. Sęk w tym że jest w Javie - musisz przepisać te modulo (procenty) na jakieś gml-owe odpowiedniki (a o takich nie pamiętam, chyba "mod"?). GML public static float angleDifference(float angle0, float angle1) { return ((((angle0 - angle1) % 360) + 540) % 360) - 180; } A to co opisałem na początku, wyglądało by mniej więcej tak. GML katReki += angleDifference(katPostaci, katReki) * 0.25; Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 2 Lipca 2014 Udostępnij Opublikowano 2 Lipca 2014 GMS ma tą funkcję This function will return the smallest angle difference between two angles as a value between -180 and 180 degrees (where a positive angle is anti-clockwise and a negative angle clockwise). GML angle_difference(ang1, ang2); Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Exigo Opublikowano 2 Lipca 2014 Udostępnij Opublikowano 2 Lipca 2014 Najs, nie wiedziałem. Widzę że doszło sporo sensownych rzeczy. :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Matrix_ Opublikowano 3 Lipca 2014 Autor Udostępnij Opublikowano 3 Lipca 2014 Zaraz przetestuje ten kodzik wyżej. Zastanawiam się czy nie użyć Interpletacji do poruszania się, czy bez sensu to jest ? 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ę