Danieo Opublikowano 22 Września 2015 Udostępnij Opublikowano 22 Września 2015 Witajcie GMClany! Jakoż, że miałem meeega długą przerwę od GMa postanowiłem po zakupie wersji Pro w HumbleBundle przypomnieć sobie podstawy. Akurat jestem na etapie fizyki i mam do was pytanie. Aby "włączyć" obiektowi oddziaływanie (kolizje) z innym obiektem trzeba nadać mu Collision event (i parę innych parametrów fizycznych, ale nie o nie tutaj chodzi) z obiektem, z którym chcę aby ten obiekt oddziaływał. Jednak jak mam kilkadziesiąt obiektów fizycznych to takie dawanie w kółko collision event z czymś tam jest męczące i nie wygodne. Moje pytanie brzmi: czy istnieje coś takiego jak collision event with all (reaguj na kolizję z wszystkimi obiektami)? P.S. Wiem, że można to rozwiązać w sposób, że tworzę obiekt z collision event z obiektami fizycznymi a następnie ustawiam go jako rodzic dla obiektów, które mają mieć kolizję z "wszystkimi" obiektami, ale chciałbym wiedzieć czy istnieje inny sposób. Pozdrawiam. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
PoxiPol Opublikowano 22 Września 2015 Udostępnij Opublikowano 22 Września 2015 Pytanie bardzo nieprzyszłościowe. Dlaczego chcialbyś takie coś stworzyć? Co jeśli zaczniesz dodawać obiekty w tle, oraz inne niekolizyjne obiekty? Odpowiadam jako odświeżka dla mnie, bo sam przeglądam właśnie swoje stare projekty. Było coś w stylu GML check_solid Albo podobnie. Przynajmniej w starym GMie, obiekt miał globalną zmienną 'solid', a później pozycyjnie można w GMLu sprawdzać czy pixel stopy gracza jest wolny czy nie. https://gmclan.org/index.php?wiki=article&zm=61 Wszystkie składają się z trzech warunków: pod hasłem obj wpisujemy all lub nazwę potrzebnego obiektu. Warunek prec określa, czy kolizja będzie obejmowała dokładny kontur obrazka(sprite), czy pole kolizji(bounding box). GML collision_point(x,y,obj,prec,notme); /* - ta funkcja sprawdza, czy punkt x i y znajduje się w kolizji z obiektem.*/ collision_rectangle(x1,y1,x2,y2,obj,prec,notme); /* - w tym wypadku jest sprawdzane, czy obiekt znajduje się w trakcie kolizji z "wypełnionym" prostokątem. x1,y1 i x2,y2 to dwa przeciwległe rogi kwadratu. Dla przykładu możemy tej funkcji użyć, by sprawdzić, czy pewna strefa jest wolna od obiektów.*/ collision_circle(xc,yc,radius,obj,prec,notme); /* - ta funkcja sprawdza, czy obiekt odbywa kolizję z kołem o określonym promieniu i wycentrowanym w pozycji xc, yc. Przykład-możemy użyć tej funkcji dla sprawdzenia, czy obiekt znajduje się w określonej strefie.*/ collision_ellipse(x1,y1,x2,y2,obj,prec,notme); /* - ta funkcja daje możliwość sprawdzenia, czy obiekt znajduje się w trakcie kolizji z elipsą rozciągniętą pomiędzy jej dwoma przeciwległymi punktami. */ collision_line(x1,y1,x2,y2,obj,prec,notme); /* - ta funkcja testuje, czy obiekt odbywa kolizję z linią rozciągniętą pomiędzy punktami x1,y1 a x2,y2. Ta funkcja jest naprawdę przydatna. Za jej pomocą możemy sprawdzić, czy np: obiekt1 "widzi" obiekt 2.*/ Edit - W komentarzach nawet gnysek opisał to o czym myślałem: GML place_free, position_meeting, place_empty Trzeba tylko znaleść jak sie te funkcje używa :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am vader Opublikowano 22 Września 2015 Udostępnij Opublikowano 22 Września 2015 Mam sprawę do... parę innych parametrów fizycznych Parametrów fizycznych? Collision boxy to w sumie nic z fizyki. Jeżeli chcesz używać Box2D (Silnika fizycznego w GM'ie) to absolutnie inna sprawa i oddzielna od podstawowego wykrywania kolizji, którego nie powinieneś używać w tej sytuacji. W innym wypadku, post Poxiego Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Danieo Opublikowano 23 Września 2015 Autor Udostępnij Opublikowano 23 Września 2015 Miałem na myśli parametry typu density obiektu itd. ale nie wiem czy to parametry z box2d czy z tego drugiego silnika. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 23 Września 2015 Udostępnij Opublikowano 23 Września 2015 Tak to są parametry z Box2D i tak, musisz stworzyć parenty i się do nich odwoływać. GM musi wiedzieć że ten dany obiekt oczekuje na kolizję z innym obiektem. Jeżeli tym obiektem jest rodzic to kolizja będzie też dotyczyć jego dzieci. 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ę