EliotPL Opublikowano 22 Lipca 2015 Udostępnij Opublikowano 22 Lipca 2015 Witam. Chciałbym zrobić animację postaci podobną do tej z gry Metroid. Chodzi o to, aby postać (bohater) po pojawieniu się na planszy był widoczny przodem, a po ruszeniu się w prawo / lewo była wykonywana animacja. Kiedy skończy się ruszać w prawo / lewo nie stoi już przodem tylko bokiem, i nie jest to ostatnie klatka animacji. Trochę zagmatwane, ale mam nadzieję, że ktoś to zrozumie. Dla ułatwienia film z tej gry (konkretny fragment) : Szukałem w internecie różnych animacji, ale to nie jest to, co chcę osiągnąć. Sam nie umiem tego zrobić. Z góry dziękuję :D Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 22 Lipca 2015 Udostępnij Opublikowano 22 Lipca 2015 Wystarczy że będziesz zmieniać sprite_index. Zrób najpierw sobie nowe sprite dla każdej animacji. Potem w zależności od tego czy postać się porusza czy nie ustawiaj odpowiedni sprite. Pytanie czy używasz klocków czy GML, oraz od tego w jaki sposób robisz poruszanie. Czy zmieniając x i y, czy manipulując prędkościami? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
EliotPL Opublikowano 22 Lipca 2015 Autor Udostępnij Opublikowano 22 Lipca 2015 No to tak: użyłem tego pierwszego poruszania z https://forum.gmclan.org/index.php?showtopic=18160 Wcześniej zrobiłem kilka spritów: jeden widok z przodu, drugi animacja biegania w prawo (dzięki temu poruszaniu nie musiałem robić w lewo) i widok z boku. Ale nadal nic nie rozumiem. Mam jeszcze takie małe pytanie: Zrobiło mi się takie coś, że jak leci animacja biegania i dotknę jakiś blok to kolizja następuje jeszcze przed zetknięciem z postacią. Co z tym zrobić? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 22 Lipca 2015 Udostępnij Opublikowano 22 Lipca 2015 No więc korzystając z tamtego przykładu wystarczy że przerobisz to tak: GML if ( keyboard_check( vk_left ) ) { image_xscale = -1; // odwrocona x -= 4; // szybkosc ruchu image_speed = 0.5; // szybkosc animacji sprite_index=ANIMACJA CHODZENIA } else if ( keyboard_check( vk_right ) ) { image_xscale = 1; // nie odwrocona x += 4; // szybkosc ruchu image_speed = 0.5; // szybkosc animacji sprite_index=ANIMACJA CHODZENIA } else { // postac stoi sprite_index=ANIMACJA STANIA } Kolizja zależy od ustawionej maski. Podczas edycji sprite możesz otworzyć ustawienia maski i ją skonfigurować dowolnie. Dla platformówek zawsze wszystkie maski powinny być prostokątami. Uważaj tylko aby twoja maska z obu stron od origin miała taką samą długość. zmieniasz image_xscale wiec jeżeli z którejś stron maska będzie dłuższa to możesz zauważyć że jak podejdziesz do ściany i się obrócisz to postać utknie. Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
EliotPL Opublikowano 22 Lipca 2015 Autor Udostępnij Opublikowano 22 Lipca 2015 Prawie to co chciałem osiągnąć :D jeszcze tylko to, że po puszczeniu prawego klawisza postać stoi bokiem zwrócona w prawo, a po puszczeniu lewego klawisza postać stoi bokiem zwrócona w lewo. Nie będą to klatki animacji bieganie tylko osobne sprity. Co muszę dodać do tego kodu, żeby tak było? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 22 Lipca 2015 Udostępnij Opublikowano 22 Lipca 2015 Nie mam pojęcia co chcesz osiągnąć. Nie potrafię sobie tego wyobrazić. sprite_index służy do zmiany sprite Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
EliotPL Opublikowano 22 Lipca 2015 Autor Udostępnij Opublikowano 22 Lipca 2015 Teraz jest tak: Włączam grę: widzę postać zwróconą przodem (sprite1) gdy biegnie w prawo widzę postać bokiem (sprite2) kiedy postać skończy biec nie chcę widzieć jej stojącej przodem tylko bokiem (nie sprite 2 tylko sprite3) (nie umiem rysować w paincie) :( Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Threef Opublikowano 22 Lipca 2015 Udostępnij Opublikowano 22 Lipca 2015 Bez zbędnego kombinowania zmień końcówkę: GML else if(x!=xstart) { // postac stoi sprite_index=ANIMACJA STANIA BOKIEM } No i ustaw jako podstawowe sprite1 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ę