Ta strona stosuje pliki cookies. Poczytaj co to jest w polityka cookies



Tworzenie gier 2D i 3D
Animacja 2d
Grafika 3D
Tworzenie muzyki

Kącik początkującego

Gimp Sprity w grach - Android

    Od wielu wieków... o trochę się zagalopowałem od wielu lat w procesie tworzenia gier obecne są tzw. sprity po polsku możemy to przetłumaczyn na duszki, które pomagają na animowanie naszych postaci - bohaterów, którymi sterujemy jak również naszyc przeciwników ale nie tylko.

    Tą metodą możemy animować także drzewa i inne elementy naszej gry. W tym artykule ukarzę w jaki sposób możemy uruchamiać nasze sprity w Corona SDK. Skorzystamy z gotowego arkusza spritów, który zachęcam, by ściągnąć na swój dysk i na nim testować. Nie polecam na etapie nauki tworzyć od razu swoje sprity, dlatego, że jest to proces pracochłonny a temat jest ogromny i można się zrazić, gdy zaczniemy się rozdrabniać zbytnio na szczegóły. W tym miejscu lepiej jest według mnie ściągnąć obrazek z duszkami i na gotowcu nauczyć się jak działa mechanizm duszków w grach a dopiero poźniej zabrać się za naukę rysowania spritów. Rysunek można ściągnąć tu -   lecacy_ptak.png - (dajemy prawym klawiszem myszy na nim i "zapisz jako" w katalogu naszego projektu i wciągamy go do niego).


Co to są sprity? Jak wyglądają sprite?

    Sprity są to kolejne klatki naszego bohatera, który może np. chodzić, biegać latać. Budując animacje za pomocą Spritów należy je w specjalny sposób uruchamiać. Z reguły Spreet Sheet jest to obrazek, na którym znajduje się kilka kroków czy stopni animacji w rysunku jeden koło drugiego jak np. na poniższym rysunku. Zamiast ładować sześć oddzielnych obrazków wystarczy załadować jeden zawierający wiele klatek, które po wyświetleniu jedna po drugiej dają wrażenie ruchu.

lecacy_ptak_maly.png

 Po co się używa spritów?

   Gdy użytkownik naszej aplikacji porusza bohaterem to nie wystarczy przemieszczać go w górę czy też na boki, lecz trzeba dodatkowo oprócz przesuwu dodać jego ruchy nogami, rękami tułowiem itd. W przeciwnym przypadku będzie to wyglądało bardzo nienaturalnie, gdyby postać była w tym czasie tylko w jednej pozie. Dlatego też tak popularne są sprity czyli duszki, które pozwalają na to by w czasie przemieszczania się naszego bohatera dodatkowo wyświetlała się animacja symulująca jego ruch, co wygląda już znacznie lepiej.

Jak uruchomić sprity?

Żeby nie przedłużać wczytajmy obrazek do naszego programu i włączmy jego animację.

local sprite = require("sprite")

local ptak_sheet sprite.newSpriteSheet("lecacy_ptak.png"133,121
)
local lecacy_ptak_set=sprite.newSpriteSet(ptak_sheet16
)
sprite.add(lecacy_ptak_set"latanie"165000
)
ptak=sprite.newSprite(lecacy_ptak_set
)
ptak:prepare("latanie"
)
ptak.x=
150
ptak
.y=
150
ptak
:play()

Sposób na uruchomienie sprita:

  1.  Na początku ładujemy bibliotekę odpowiedzialną za duszki stosując komendę require("sprite").

  2. Następnie wczytujemy arkusz aplikacji poleceniem sprite.newSpriteSheet("nazwa_pliku_z_arkuszem_duszków", szerokość_pojedynczego_duszka, wysokość_pojedynczego_duszka). Oznacza to, że taki obrazek jaki jest ukazany na samej górze tej strony wczytujemy a w nim są kolejne klatki animacji o identycznych wymiarach.

  3. Tworzymy ustawienie spritów stosując komendę sprite.newSpritSet(nazwa_arkusza_duszków, startowa_klatka, ilość_klatek_w_animacji). W ten sposób tworzymy kolekcję klatek dotyczącą jednej postaci, bo przecież cały arkusz może dotyczyć wielu różnych postaci. Oczywiście te klatki choć dotyczą już tylko jednej postaci mogą zawierać w sobie różne funkcje na które można dokonać kolejnego podziału, np. skakanie, czołganie się itd. Tego dokonamy w kolejnym kroku.

  4. Teraz dodajemy kolejne funkcje dotyczące danej postaci, czyli np. latanie. Niestety w naszym przykładzie będzie to jedyna funkcja ale równie dobrze mogłoby być latanie w lewo, w prawo, wzbijanie się w górę itd. W każdym razie ważne jest by zrozumieć całą koncepcję i wiedzieć po co aż tyle operacji, by wyświetlić jedną animację. Schemat jest następujący  sprite.add(ustawienia_duszków, "nazwa_funkcji(np. latanie)", początkowa klatka, ilość klatek, czas_wyświetlania_tych_klatek(szybkość_animacji), ilość_powtórzeń(0-oznacza nieskończoność)). Gdy chcemy uruchomić animację tylko jeden raz - np. statek się rozbija i eksploduje to wystarczy tę liczbę ustawić na 1. Gdy ustawimy 2 to sekwencja zostanie powtórzona 2 razy gdy zaś przejdziemy na ujemną wartość to będzie wyświetlana tam i z powrotem, czyli gdy skończy się to znów zacznie ale od końca.

  5. Teraz tworzymy zmienną przez którą będziemy mogli uruchamiać kolejne sekwencje dotyczące naszego ptaka. ptak= sprite.newSprite(nazwa_arkusz_duszka)

  6. ptak.prepare("latanie") - zatrzymuje wszystkie inne sekwencje związane z naszym bohaterem np. wzbijanie_się_do_gory i ustawia latanie jako aktualną wskazując na pierwszą klatkę jako startową.

  7. ptak.x i ptak.y - ustawiamy pozycję ptaka na ekrane w odpowiednim miejscu

  8. ptak:play() - uruchamiamy naszą sekwencję, która w naszym przypadku będzie trwała aż wyłączymy program.

corona_sdk_52.jpg

Aplikacja po uruchomieniu wygląda tak jak obok na zdjęciu z tym, że sekwencja jest uruchomiona natomiast tu obok jest statyczne zdjęcie.

Więcej sekwencji sprite

Na koniec dodajmy jeszcze jedną linię:


sprite
.add(lecacy_ptak_set"lot"525000
 

która ustawi nową sekwencję lot na dwie ostatnie klatki animacji zaczynając od 5.

By to zadziałało trzeba jeszcze zmienić ptak:prepare("latanie")

na ptak:prepare("lot")

Tym sposobe uruchomiliśmy inną sekwencję w obrębie tej samej tabeli spritów. Zachęcam do testów, bo wtedy dużo łatwiej wszystko zrozumieć.

Czytaj dalej: Sprity w grach - Android
Warning: include_once(includes/rss_fetch.php) [function.include-once]: failed to open stream: No such file or directory in /home/ekoinst/domains/pcwiedza.pl/public_html/tworzenie-gier/includes/funkcje.php on line 548

Warning: include_once() [function.include]: Failed opening 'includes/rss_fetch.php' for inclusion (include_path='.:/opt/alt/php52/usr/share/pear:/opt/alt/php52/usr/share/php') in /home/ekoinst/domains/pcwiedza.pl/public_html/tworzenie-gier/includes/funkcje.php on line 548

Różne

copyright © Pcwiedza.pl