Skocz do zawartości

Kolizja wektorowa


PoxiPol

Rekomendowane odpowiedzi

Ok, dodam już do zaawansowanych, bo chcę zaszpanować.

 

Otóż z ciekawości oraz dla nauki programuję fizykę pocisków, ale matematycznie. Wektorowo.

Na razie wszystko jest tylko teorią, ale przetłumaczyć na GML to na razie nie mam problemu.

 

Pocisk ma kierunek player.image_angle a to można ładnie przekonwertować na m=tan(player_image_angle), sprawdzając czy nie równa się 90 lub 270, bo wtedy mamy błąd. Tam będzie linia x=player.x.

 

No to ta nasza linia pocisku sprawdza kolizję collision_line czy jak tam, bez problemu. To nam odsyła obiekt z którym mamy kolizję.

Jeśli używam ścian gdzie są same proste linie, mogę bez problemu wyliczyć na jakiej pozycji jest kolizja, i z tego obliczać np ricochet itd. Nawet w zaokrąglonych sytuacjach jest koło lub parabola i z niej wyliczamy równanie działań by odzyskać x_collision i y_collision, a później

y*x_collision?x*y.colission=0 itd. wyliczamy z tego gradient i przeliczamy na kąt.

Mam nadzieję że wszystko ma na razie sens. Dosyć prosta geometria + algebra.

 

 

I tutaj jest problem, przynajmniej jak na razie na moją logikę. Co mnie martwi, to że na razie to sposób w jaki bym to robił to programował te linie kolizji w obiekcie ręcznie, a lepiej by było zautomatyzować.

Proszę, na szybko narysowana moja postać z DnD zwektorowana z kiepskiego rysunku w paincie.

sOLAEmZ.jpg

A na to po prostu pomysłu dobrego nie mam. Istnieją programy które przerabiają bitmapy na vectory, i właśnie takie coś bym chciał zrobić.

 

Może źle do tego podchodzę? Opinie pls. Vectory są dla mnie ważne bo chcę wyliczać kąt pod którym pocisk udeża.

Odnośnik do komentarza
Udostępnij na innych stronach

Wiem, ale nie prosiłem o to, bo nie używam silnika fizyki w GMie. Szczerze, jest dosyć do dupy. Chcę to zrobić własną ręką, i być pewny że działa tak jak chcę. Ja tutaj potrzebuję INSTANTOWEGO wyliczenia, wszystko w jednym kroku.

Ja nie piszę fizyki per se. Nie potrzebuję grawitacji.

 

Do tego niezbyt mi twoja odpowiedź pomogła, bo wygląda na to że nie przeczytałeś nawet pytania. Ja szukam możliwości przerobienia bitmapy na wektor.

Odnośnik do komentarza
Udostępnij na innych stronach

możesz to zrobić ręcznie w Inkscape dla każdego obrazka (wektoryzacja bitmapy), zapisać wynik w jakimś wygodnym formacie i wczytać wektory do GM-a

 

nieco szerzej o wektoryzacji: Inkscape korzysta z silnika Potrace, który mając podaną bitmapę i parametry, wypluwa zbiór wektorów, który można zapisać w dowolnym formacie wektorowym

wektoryzacja to nie jest łatwa sprawa, robienie tego w locie nie ma większego sensu - najlepiej jest zwektoryzować wszystkie bitmapy na samym początku, zmodyfikować wektory ręcznie, dopiero potem wrzucić do gry

Odnośnik do komentarza
Udostępnij na innych stronach

Ugh, to popatrz znowu na mój pierwszy post. To już wiem, ja chcę sam jakieś uproszczone wektory robić na podstawie 1 kolorowej bitmapy w gmie :/

Jeśli od teraz nie dasz mi kawałku kodu lub matematyki, proszę nie udzielaj się więcej w temacie.

 

Możesz zrobić w kolizji próbkowania lokalnego pola (tak dużego jak Ci smakuje z tej bitmapy) i z niego uzyskać tangent (styczną) wektora kierunkowego powierzchni kolizji.

A dalej to już po ludzku tak jak z rykoszetem.

 

Przydatne w poślizgach 3d (heightmap) by określić czy samolotem jeszcze się ślizgasz po lotnisku czy zaryłeś i urwałeś koło na dziurze.

Odnośnik do komentarza
Udostępnij na innych stronach

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ę
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...