ka21k Opublikowano 27 Maja 2011 Udostępnij Opublikowano 27 Maja 2011 Witam. W mojej grze Asteroids TUTAJ jest możliwość złapania dodatkowego członu statku. Gdy to nastąpi doczepia się on do tylu kadłuba i porusza (obraca) się razem z głównym członem. Problem polega na tym, że w momencie przyspieszenia ten dodatkowy człon jak gdyby reaguje trochę później i zostaje minimalnie w tyle. Tak jakby był doczepiony jakąś gumową liną. Szukałem na forum i nie mogę znaleźć tematu w którym ktoś miał podobny problem i doradzono mu żeby rysował oba obiekty w END STEP lub DRAW. I tu właśnie moje pytanie. Jak sprawić aby oba obiekty były ze sobą połączone w taki sposób żeby nie było widać tych opóźnień podczas przyspieszania. W obiekcie STATEk mam STEP i kod: GML //przyspieszenie if(keyboard_check(vk_up)) { motion_add(kierunek, 0.5) image_index=1; } else image_index=0; W obiekcie STATEK2 mam STEP i kod: GML //jeśli są połączone if(polaczenie) { x=statek.x+lengthdir_x(25,statek.image_angle-180); y=statek.y+lengthdir_y(25,statek.image_angle-180); image_angle=statek.kierunek; } Mam nadzięję, że nie zagmatwałem tego za dużo. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Dawka83 Opublikowano 27 Maja 2011 Udostępnij Opublikowano 27 Maja 2011 Zmień z step na draw i będzie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
kt1117 Opublikowano 27 Maja 2011 Udostępnij Opublikowano 27 Maja 2011 GML (Statek2 Draw) if(polaczenie) { draw_sprite_ext(sprite_index,0,statek.x+lengthdir_x(25,statek.image_angle-180),statek.y+lengthdir_y(25,statek.image_angle-180),..coś tam coś tam...,w arg rot:statek.kierunek,i inne arg.) } Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
I am Lord Opublikowano 27 Maja 2011 Udostępnij Opublikowano 27 Maja 2011 przenieś kod ze stepa do begin stepa albo end stepa to już wyjdzie samo ;) lub do drawa ale tylko w przypadku kiedy używasz 1 viewa. Bo draw wykonuje się tyle razy na 1 klatkę gry ile jest aktywnych viewów. ( więc na marne by się wtedy miało zmieniać parokrotnie, taka mała kwestia optymalizacyjna :P ) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
ka21k Opublikowano 28 Maja 2011 Autor Udostępnij Opublikowano 28 Maja 2011 Wielkie dzięki za szybką pomoc. Poradziłem sobie w taki sposób. Za poradą HuderLord'a: w obiekcie STATEK zmieniłem STEP na BEGIN STEP. w obiekcie STATEK2 zmieniłem STEP na END STEP do wyliczenia x, y, i image_angle względem obiektu STATEK po połączeniu. Dzięki sugestii kt1117 do STATKU2 dodałem EVENT DRAW i w nim rysowałem spritea w ten sposób: GML draw_sprite_ext(sprite_index,-1,x,y,1,1,image_angle,c_white,1); Musiałem tak zrobić ponieważ przeniesienie warunku: GML if(polaczenie) { draw_sprite_ext(sprite_index,0,statek.x+lengthdir_x(25,statek.image_angle-180),statek.y+lengthdir_y(25,statek.image_angle-180),1,1,statek.image_angle,c_white,1); } do DRAW po połączeniu podczas strzelania pociski ze STATKU2 pojawiały się w miejscu przejęcia obiektu (połączenia), a nie w aktualnej pozycji. Przy okazji poprawiłem sobie TARCZE która też miała lekkie opóźnienia w pozycji w stosunku do STATKU. Jeszcze raz dziękuję za pomoc i pozdrawiam. 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ę