Skocz do zawartości

Animacja postaci (na wzór z gry Metroid) jak ją wykonać?


Rekomendowane odpowiedzi

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

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

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

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

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

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)

 

24ypkwx.png

(nie umiem rysować w paincie) :(

 

Odnośnik do komentarza
Udostępnij na innych stronach

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ę
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...