Fiox Opublikowano 18 Stycznia 2012 Udostępnij Opublikowano 18 Stycznia 2012 Witam. Mam animację broni, a dokładnie to odrzutu zamka. Są dwa sprity: jeden to postać z bronią w ręku (spr_player_gun), a drugi to dwu klatkowa animacja postaci z odrzutem zamka i jego powrotem na swoje miejsce (spr_player_shot). Wygląda to tak: Glob Left Pressed -> sprite_index = spr_player_shot; Animation end -> if sprite_index=spr_player_shot sprite_index=spr_player_gun Polega to na tym, że po jednym naciśnięciu LPM animacja wykonywana jest tylko raz, czyli zamek broni w tył i spowrotem. No i wszystko działa dobrze, do czasu aż dodam skrypt na poruszanie się postaci (w step) GMLxx = x; yy = y; go_up = false; go_down = false; go_right = false; go_left = false; angle = 0; if (keyboard_check(vk_up)) { go_up = true; } if (keyboard_check(vk_down)) { go_down = true; } if (keyboard_check(vk_right)) { go_right = true; } if (keyboard_check(vk_left)) { go_left = true; } buttons_pushed = (go_up & 1) + (go_right & 1) + (go_left & 1) + (go_down & 1); if (buttons_pushed >= 1 && buttons_pushed <= 2) { x_dist = 48; y_dist = 48; if (go_right && go_up) angle = pi*0.25; else if (go_up && go_left) angle = pi*0.75; else if (go_left && go_down) angle = pi*1.25; else if (go_down && go_right) angle = pi*1.75; else if (go_right) angle = 0; else if (go_up) angle = pi*0.5; else if (go_left) angle = pi; else if (go_down) angle = pi*1.5; xx += cos(angle)*x_dist; yy -= sin(angle)*y_dist; image_angle = -90 + angle * 180 / pi; } if place_free(xx,yy) { if mp_linear_step(xx,yy,4,false) { entered = true; if (!keyboard_check(vk_up) && !keyboard_check(vk_down) && !keyboard_check(vk_left) && !keyboard_check(vk_right)) { image_single=0; image_speed=0; } } } else { xx = x; yy = y; } Po dodaniu tego kodu, animacja zatrzymuje się na pierwszej klatce sprita spr_player_shot, czyli tej z zamkiem broni przesuniętym w tył. Dalej nic się nie da zrobić, po ponownym naciśnięciu LPM animacja zostaje tak jak jest, czyli z odrzuconym zamkiem. Dlaczego tak się dzieje i jak temu zapobiec? Pozdrawiam i z góry dziękuje za pomoc :) Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Muuuuczek567 Opublikowano 18 Stycznia 2012 Udostępnij Opublikowano 18 Stycznia 2012 Winny jest ostatni fragment kodu. Przed place_free dodaj znak '!', czyli negacja. Może to coś da. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Fiox Opublikowano 18 Stycznia 2012 Autor Udostępnij Opublikowano 18 Stycznia 2012 Działa :) Będę musiał poczytać o tej negacji. Pozdrawiam Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Muuuuczek567 Opublikowano 18 Stycznia 2012 Udostępnij Opublikowano 18 Stycznia 2012 Zadziałało, ponieważ place_free() zwraca false, jeśli jest jakiś obiekt na tej pozycji. U Ciebie postać zatrzymywała się wtedy, gdy nie znalazło przeszkod (czyli zwróciło true) i tu był błąd. Negacja po prostu zamienia znak liczby, czyli true na false/vice versa. Dzięki temu postać zatrzyma się wtedy, gdy znajdzie przeszkodę. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Fiox Opublikowano 18 Stycznia 2012 Autor Udostępnij Opublikowano 18 Stycznia 2012 Myślałem że działa, ale jednak nie do końca, bo teraz postać się nie porusza. Jedynie obraca się w kierunku w którym powinna iść, ale się nie przemieszcza. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Muuuuczek567 Opublikowano 18 Stycznia 2012 Udostępnij Opublikowano 18 Stycznia 2012 Hmm, wcześniej też powinno : / W takim razie: usuń podany przeze mnie wykrzyknik, a do kodu: if (!keyboard_check(vk_up) && !keyboard_check(vk_down) && !keyboard_check(vk_left) && !keyboard_check(vk_right)) dodaj: && sprite_index = spr_player_gun Teraz powinno działać, choć nic nie obiecuję. W przeciwnym wypadku, możesz podesłać mi projekt na PW, naprawię, co trzeba. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Fiox Opublikowano 18 Stycznia 2012 Autor Udostępnij Opublikowano 18 Stycznia 2012 Nie działa. Podeśle Ci projekt na PW 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ę