SimianVirus8 Opublikowano 31 Stycznia 2015 Udostępnij Opublikowano 31 Stycznia 2015 Witam. Po dwóch latach, postanowiłem znowu zacząć się bawić w gm i znowu napotykam problemy na początku tworzenia. Ostatnio pomógł mi użytkownik z Czech Ereg, za co mu serdecznie dziękuje, bo z jego przykładów korzystam do dziś. Mianowicie buguje mi się miecz [niepoprawne animacje] na obiekcie z włączonym "solid", a bohater, na którym użyłem identycznej komendy, działa jak należy. Przesyłam film dla lepszego zrozumienia i oczywiście skrypty w gml'u. Skrypt miecza: GML // Animacje if(keyboard_check(ord("D")) && place_free(x+4,y)) { sprite_index = Miecz1_right; image_speed = .2; image_xscale = 1; } if(keyboard_check(ord("A")) && place_free(x-4,y)) { sprite_index = Miecz1_left; image_speed = .2; image_xscale = 1; } if(keyboard_check(ord("W")) && place_free(x,y+4)) { sprite_index = Miecz1_up; image_speed = .2; image_xscale = 1; } if(keyboard_check(ord("S")) && place_free(x,y-4)) { sprite_index = Miecz1_down; image_speed = .2; image_xscale = 1; } if((!keyboard_check(ord("D")) && !keyboard_check(ord("A")) && !keyboard_check(ord("S")) && !keyboard_check(ord("W") ))) { image_speed = 0; sprite_index = Miecz1_stand; } // Spawn x = Jan.x; y = Jan.y; Skrypt bohatera [Jan]: GML // Sterowanie i Animacja if(keyboard_check(ord("D")) && place_free(x+4,y)) { x+=4; sprite_index = Jan_right; image_speed = .2; image_xscale = 1; } if(keyboard_check(ord("A")) && place_free(x-4,y)) { x-=4; sprite_index = Jan_left; image_speed = .2; image_xscale = 1; } if(keyboard_check(ord("W")) && place_free(x,y-4)) { y-=4; sprite_index = Jan_up; image_speed = .2; image_xscale = 1; } if(keyboard_check(ord("S")) && place_free(x,y+4)) { y+=4; sprite_index = Jan_down; image_speed = .2; image_xscale = 1; } if((!keyboard_check(ord("D")) && !keyboard_check(ord("A")) && !keyboard_check(ord("S")) && !keyboard_check(ord("W") ))) { image_speed = 0; sprite_index = Jan_stand; } Znajdzie się dobra duszeczka, która wyjaśni o co biega ? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SimianVirus8 Opublikowano 31 Stycznia 2015 Autor Udostępnij Opublikowano 31 Stycznia 2015 Wpadłem na pomysł, by napisać kod, że jeśli Miecz napotka "solid" to ma ustawiony sprite na standardowy, tak jak tutaj GML if((!keyboard_check(ord("D")) && !keyboard_check(ord("A")) && !keyboard_check(ord("S")) && !keyboard_check(ord("W") ))) { image_speed = 0; sprite_index = Miecz1_stand; } Próbuje już od pół godziny i nadal nie wiem jak napisać tą komende, próbowałem już z GML !place_free GML place_meeting ale nie wychodzi Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Sutikku Opublikowano 1 Lutego 2015 Udostępnij Opublikowano 1 Lutego 2015 W ogóle najlepiej zastanowić się skąd się to bierze. Jak chodzisz to sprawdza czy jest obok wolne miejsce. Więc jeśli nie znajdzie to zostanie przy starej animacji. A wolnego miejsca nie znajduje bo obok jest SOLID. Weź spróbuj pousuwać to place_free z kodu miecza, dla testu. A może niech animacja miecza będzie zmieniała się nie względem wciśniętych klawiszy i pozycji, a animacji bohatera? Coś takiego GML if(Jan.sprite_index==Jan_right) sprite_index=Miecz1_right; Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SimianVirus8 Opublikowano 1 Lutego 2015 Autor Udostępnij Opublikowano 1 Lutego 2015 Ooo, dzięki koleś, o to chodziło, cud, miód i orzeszki. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Sutikku Opublikowano 1 Lutego 2015 Udostępnij Opublikowano 1 Lutego 2015 Tak z ciekawości. Usunąłeś te place_free() czy zmieniłeś kod na taki jaki Ci podałem? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
SimianVirus8 Opublikowano 1 Lutego 2015 Autor Udostępnij Opublikowano 1 Lutego 2015 Użyłem twojego kodu GML // Animacje if(Jan.sprite_index==Jan_right) { sprite_index=Miecz1_right; image_speed = .2; image_xscale = 1; } if(Jan.sprite_index==Jan_up) { sprite_index=Miecz1_up; image_speed = .2; image_xscale = 1; } if(Jan.sprite_index==Jan_down) { sprite_index=Miecz1_down; image_speed = .2; image_xscale = 1; } if(Jan.sprite_index==Jan_left) { sprite_index=Miecz1_left; image_speed = .2; image_xscale = 1; } if(Jan.sprite_index==Jan_stand) { sprite_index=Miecz1_stand; image_speed = .2; image_xscale = 1; } 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ę