Projekty Pygame pozbawione animacji mogą być niesamowicie nudne. Zwiększ atrakcyjność swoich gier, dodając urzekające animacje.
Animacja to kluczowy aspekt tworzenia gier, który ożywia i dynamizuje Twoje dzieła. Włączając animacje, możesz tworzyć urzekające efekty wizualne i wciągające wrażenia z rozgrywki dla swoich graczy.
Pygame zapewnia kompleksowy zestaw narzędzi, które upraszczają proces tworzenia animacji. Zapewnia wbudowane funkcje, w tym ładowanie i wyświetlanie ramek, sterowanie animacjami za pomocą danych wejściowych gracza i tak dalej.
Stwórz prostą grę
Zacznij od stworzenia prostej gry, która pozwala graczowi poruszać się w lewo i prawo. Możesz także dodać platformę do gry.
Kod użyty w tym artykule jest dostępny w this Repozytorium GitHub i jest darmowy do użytku na licencji MIT.
Utwórz nowy plik prosta gra.py i zdefiniuj niektóre zmienne, w tym pozycje początkowe i prędkości dla gracza i platformy. Te zmienne będą używane do kontrolowania ruchu ikonki gracza.
Obsługuj dane wejściowe gracza, pobierając stan klawiatury za pomocą
pygame.key.get_pressed(). Naciśnięcie klawisza strzałki w lewo umożliwia zmniejszenie wartości gracz_x, a po naciśnięciu klawisza strzałki w prawo można ją zwiększyć. Tworzy to efekt ruchu duszka gracza.Twoja początkowa gra powinna wyglądać następująco:
Ładowanie i wyświetlanie ramek
Aby utworzyć animacje, ładuj i wyświetlaj różne obrazy lub klatki animacji. Każda klatka reprezentuje określony obraz lub duszka, który będzie wyświetlany w sekwencji, aby stworzyć iluzję ruchu. Załóżmy, że masz trzy ramki: ramka0, rama1, I rama2. Początkowo możesz wyświetlić ramka0.
Utwórz nowy plik o nazwie animacja.py i dodaj kod z poniższymi aktualizacjami:
# Załaduj ramki
ramka0 = pygame. Powierzchnia((20, 20))
ramka0.wypełnienie((255, 0, 0))ramka1 = pygame. Powierzchnia((20, 20))
ramka1.wypełnienie((0, 255, 0))ramka2 = pygame. Powierzchnia((20, 20))
ramka2.wypełnienie((0, 0, 255))# Ustaw początkową klatkę
bieżąca_ramka = ramka0# Pętla gry
chwila działanie:
# ...# Renderuj grę
# ...
screen.blit (bieżąca_ramka, (gracz_x, gracz_y))pygame.display.flip()
# ...
Kontrolowanie animacji za pomocą danych wejściowych gracza
Aby animować duszka gracza, możesz przełączać się między różnymi klatkami w zależności od danych wejściowych gracza. Na przykład, gdy gracz porusza się w lewo lub w prawo za pomocą klawiszy strzałek, można iterować między klatkami, aby stworzyć iluzję ruchu.
# Pętla gry
chwila działanie:
# ...# Obsługuj wejście gracza
klucze = pygame.key.get_pressed()
Jeśli klucze [gra. K_LEWO]:
gracz_x -= prędkość_gracza
bieżąca_ramka = ramka1
Elif klucze [gra. K_PRAWO]:
gracz_x += prędkość_gracza
bieżąca_ramka = ramka2
w przeciwnym razie:
bieżąca_ramka = ramka0# Renderuj grę
# ...
screen.blit (bieżąca_ramka, (gracz_x, gracz_y))pygame.display.flip()
# ...
Poniżej znajduje się wyjście:
W tym dodatkowe funkcje
Oprócz podstawowej funkcjonalności animacji, Pygame oferuje kilka dodatkowych funkcji, które poprawią Twoje wrażenia z tworzenia gier.
Arkusze sprite'ów
Zamiast wczytywać pojedyncze klatki, możesz użyć arkuszy sprite, które zawierają wiele klatek na jednym obrazie. Pygame zapewnia funkcje wyodrębniania i wyświetlania określonych regionów arkusza sprite. Oto przykład:
# Załaduj obraz arkusza sprite
sprite_sheet = pygame.image.load("arkusz sprite.png")# Zdefiniuj wymiary każdej ramki
szerokość_ramki = 32
wysokość_ramki = 32# Funkcja wyodrębniania ramek z arkusza sprite
pokwyciąg_ramek(arkusz, szerokość_ramki, wysokość_ramki):
# kod do wyodrębniania ramek# Wyodrębnij ramki z arkusza sprite
ramki = wyciąg_ramek (sprite_arkusz, szerokość_ramki, wysokość_ramki)# Wyświetl ramkę z arkusza sprite
bieżąca_klatka = ramki [0]
# Pętla gry
chwila działanie:
# ...
screen.blit (bieżąca_ramka, (gracz_x, gracz_y))
# ...
Prędkość animacji
Możesz kontrolować szybkość animacji, wprowadzając opóźnienia między aktualizacjami klatek. Pozwala to na płynny i realistyczny ruch. Oto przykład, jak można kontrolować szybkość animacji używając czas moduł:
# Zmienne prędkości animacji
opóźnienie_animacji = 100# Opóźnienie w milisekundach między aktualizacjami ramek
last_frame_time = pygame.time.get_ticks()# Pętla gry
chwila działanie:
# ...# Sprawdź, czy minęło wystarczająco dużo czasu, aby zaktualizować ramkę
current_time = pygame.time.get_ticks()
Jeśli current_time - last_frame_time >= animacja_opóźnienie:
# Zaktualizuj ramkę# Renderuj grę
# ...
screen.blit (bieżąca_ramka, (gracz_x, gracz_y))
pygame.display.flip()
Wykrywanie kolizji
Pygame oferuje funkcje wykrywania kolizji do wykrywania interakcji między animowanymi obiektami, takimi jak wykrywanie, kiedy gracz zderza się z platformą. Oto przykład, jak włączyć wykrywanie kolizji do swojej gry:
# Wykrywanie kolizji
pokcheck_collision(rekt_gracza, prostota_platformy):
Jeśli player_rect.colliderect (platforma_rect):
# Wystąpiła kolizja
powrótPRAWDA
w przeciwnym razie:
powrótFAŁSZ# Pętla gry
chwila działanie:
# ...# Wykonaj wykrywanie kolizji
player_rect = pygame. Prostokąt (gracz_x, gracz_y, 20, 20)
platform_rect = pygame. Rect (platforma_x, platforma_y,
szerokość_platformy, wysokość_platformy)Jeśli check_collision (player_rect, platform_rect):
# Uchwyt kolizji# Renderuj grę
# ...
screen.blit (bieżąca_ramka, (gracz_x, gracz_y))
pygame.display.flip()
Korzystając z tych dodatkowych funkcji, możesz rozszerzyć możliwości tworzenia gier i tworzyć bardziej dynamiczne i wciągające wrażenia z gry. Eksperymentuj z różnymi technikami, łącz je kreatywnie i pozwól swojej wyobraźni poprowadzić Cię w tworzeniu naprawdę wciągających gier.
Najlepsze praktyki tworzenia animacji w Pygame
Podczas dodawania animacji do projektów Pygame ważne jest, aby postępować zgodnie z najlepszymi praktykami, aby zoptymalizować implementację i zapewnić płynne i wydajne animacje. Weź pod uwagę następujące wskazówki:
Wstępne ładowanie i przechowywanie ramek w pamięci
Ładowanie obrazów z dysku podczas pętli gry może powodować opóźnienia i wpływać na wydajność. Aby tego uniknąć, załaduj wstępnie klatki i zapisz je w pamięci przed rozpoczęciem pętli gry. W ten sposób można szybko uzyskiwać dostęp do ramek i wyświetlać je w czasie wykonywania bez narzutu na operacje we/wy dysku.
Wykorzystaj wbudowane klasy duszków i animacji Pygame
Pygame zapewnia wbudowane klasy, takie jak pygame.sprite. Krasnoludek I pygame.sprite. Grupa co upraszcza zarządzanie duszkami i animacjami. Korzystając z tych klas, można wydajniej obsługiwać wykrywanie kolizji, aktualizacje grupowe i renderowanie.
Zoptymalizuj formaty obrazu
Rozważ optymalizację formatów obrazów w celu uzyskania lepszej wydajności. Pygame obsługuje różne formaty obrazów, w tym PNG i JPEG. Format PNG jest ogólnie zalecany do obrazów z przezroczystością, natomiast format JPEG jest odpowiedni do obrazów statycznych bez przezroczystości.
Eksperymentuj z różnymi formatami obrazu i poziomami kompresji, aby znaleźć optymalną równowagę między jakością obrazu a rozmiarem pliku.
Używaj odpowiednich szybkości klatek
Aby uzyskać płynne animacje, ważne jest ustawienie odpowiedniej liczby klatek na sekundę. Pygame zapewnia pygame.time. Zegar class, która pomaga kontrolować liczbę klatek na sekundę poprzez regulację szybkości pętli gry.
Dzwoniąc do kleszcz() metoda obiektu Clock na końcu każdej iteracji, możesz zachować spójną liczbę klatek na sekundę. Dostosuj liczbę klatek na sekundę w oparciu o złożoność animacji i możliwości wydajności platformy docelowej.
Postępując zgodnie z tymi najlepszymi praktykami, możesz zoptymalizować implementację animacji, poprawić wydajność swoich gier oraz stworzyć atrakcyjne wizualnie i wciągające wrażenia dla swoich graczy.
Spraw, by gry były przyjemniejsze dzięki animacjom
Dodanie animacji do gier może znacznie poprawić ogólne wrażenia gracza. Animacje ożywiają postacie i obiekty, sprawiając, że ruchy są płynniejsze i bardziej wciągające. Niezależnie od tego, czy chodzi o skakanie postaci, atak wrogów czy interakcję obiektów, animacje sprawiają, że świat gry jest bardziej wciągający i atrakcyjny wizualnie.
Wykorzystując możliwości animacji Pygame, możesz zniewolić swoich graczy i tworzyć gry, które pozostawiają niezatarte wrażenie.