Jake Opublikowano 14 Grudnia 2012 Udostępnij Opublikowano 14 Grudnia 2012 Hej, Mam problem, nie bardzo wiem jak napisać takie coś: Kolizja playera z enemy. Player odskakuje w bok i zmienia się spirte na migający i przez chwilę jest ustawiony godmode. Każdy to zna z gier platformowych. Mój kod wygląda tak: STEP Playera: GML if keyboard_check(ord('D')) { if place_free(x+5,y) { x+=5; sprite_index=sprright dir=0; if place_meeting(x,y,enemy) { x-=50; // Odskok } } } Odskok jakby działa, ale mimo wszystko przesuwa playera o 50 pikseli, da się to zrobić jakoś płynnie? Coś na zasadzie bounce? I przy okazji zapytam dlaczego nie działa następujący kod: GML if ! place_free(x+0,y+1) { if place_meeting(x,y,enemy) { y-=50; } vspeed=-10 } Tu akurat chodzi o to żeby player skacząc od góry na enemy nie wpadał do jego środka a odbił się na zasadzie kodu powyżej. Niestety dalej wpada. Z góry dzięki. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Fervi_ Opublikowano 15 Grudnia 2012 Udostępnij Opublikowano 15 Grudnia 2012 move_towards_point(x,y,sp) - ruch obiektu do określonej pozycji (x,y) sp określa prędkość podążania. Co do drugiego: GML if ! place_free(x+0,y+1) { if place_meeting(x,y,enemy) { y-=50; } vspeed=-10 } Nie jestem pewien czy po If nie powinieneś czasem dać nawiasów (wg. dokumentacji tak) Chyba przy funkcji powinien być wykrzyknik (tzn. podejrzewam, że ogólnie w tym nawiasie do place_free) Ogólnie wiesz, że wartości x,y; to piksele, a nie kratki? Trochę chyba namodziłeś z tym drugim kodem Nie prościej zrobić Event "Collision" z Enemy, który by robił GML y=y-50; A w create (bo pierwszy if to chyba robi) GML vspeed=-10 Fervi Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Jake Opublikowano 15 Grudnia 2012 Autor Udostępnij Opublikowano 15 Grudnia 2012 Nie bardzo rozumiem do czego ma mi się przydać move towards point? Jakie nawiasy? Chodzi o składnie? Co do kolizji to może masz rację, spróbuję po prostu w event dać: GML x=xprevious y=yprevious No ale mniejsza, mógłby mi ktoś pomóc z tym cool down time po kolizji z enemy? Jak opisałem wyżej, chwilowy god mode i migotanie sprite. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Bedziom Opublikowano 15 Grudnia 2012 Udostępnij Opublikowano 15 Grudnia 2012 move_towards_point sprawi, że player nie przeskoczy Ci tych 50 pixeli, tylko płynnie przejdzie przez nie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
LionX Dagger Opublikowano 15 Grudnia 2012 Udostępnij Opublikowano 15 Grudnia 2012 wszystko fajnie tylko wiecie że to będzie za każdym razem go odpychać kiedy wejdzie w kontakt z wrogiem to po 1, po 2 odepchnie go praktycznie tylko około 1 punkt (zależy od speeda w move toward point) od wroga a zrozumiałem ze chce takie typowe odepchnięcie na dłuższą odległość więc pokolei ja to bym zrobił tak : GML (create) throw=0 god=0 GML (step) if god=1 { god=2 alarm[0]=czas ile sekund ma trfać alarm[1]=jak długo ma lecieć do tyłu } else if god=2 { a tu kod na efekty cool dawn np alpha, kolor, muzyczka, itp } if throw=0 { kod na ruchu Playera } else if throw!=0 { ten sam kod jak do skoku z klawiatury if throw=1 { if place_free(x+ilość przesuwanych punktów,y) x+= ilość przesuwanych //np 2 czy 3 raczej na pewno nie 50 :p } else if throw=2 { if place_free(x-ilość przesuwanych punktów,y) x-= ilość przesuwanych //np 2 czy 3 raczej na pewno nie 50 :p }} GML (alarm0) god=0 GML (alarm1) throw=3 GML (collision enemy) if vspeed>=0 { if god mod=0 { hp-=ileś tam god=1 if x>other.x throw=1 else throw=2 }} else { vspeed=-10 i co tam jeszcze chcesz :P } GML (collision floor) if throw=3 throw=0 kod nie testowany, pisany z głowy więc pewnie zawiera masę błędów no i z całą pewnością można go ulepszyć chyba działa ale głowy za to urwać sobie nie dam :P 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ę