Projekti Pygame brez animacije so lahko neverjetno dolgočasni. Povečajte privlačnost svojih iger z vključitvijo očarljivih animacij.

Animacija je ključni vidik razvoja igre, ki vnaša življenje in dinamiko v vaše stvaritve. Z vključitvijo animacij lahko ustvarite očarljive vizualne podobe in poglobljene izkušnje igranja za svoje igralce.

Pygame ponuja obsežen nabor orodij, ki poenostavljajo postopek ustvarjanja animacij. Zagotavlja vgrajene funkcije, vključno z nalaganjem in prikazovanjem okvirjev, nadzorom animacij z vnosom igralca itd.

Ustvari preprosto igro

Začnite z ustvarjanjem preproste igre, ki igralcu omogoča premikanje levo in desno. Igri lahko dodate tudi platformo.

Koda, uporabljena v tem članku, je na voljo tukaj Repozitorij GitHub in je brezplačen za uporabo pod licenco MIT.

Ustvari novo datoteko simple-game.py in definirajte nekatere spremenljivke, vključno z začetnimi položaji in hitrostmi igralca in platforme. Te spremenljivke bodo uporabljene za nadzor gibanja igralčevega duha.

Upravljanje z vnosom igralca s pridobivanjem stanja tipkovnice z uporabo pygame.key.get_pressed(). Če pritisnete levo puščično tipko, lahko zmanjšate vrednost igralec_x, in če pritisnete desno puščično tipko, ga lahko povečate. To ustvari učinek gibanja za igralčev sprite.

Vaša začetna igra bi morala izgledati takole:

Nalaganje in prikaz okvirjev

Če želite ustvariti animacije, nalaganje in prikaz različnih slik ali okvirji animacije. Vsak okvir predstavlja določeno sliko ali sprite, ki bo prikazan v zaporedju, da se ustvari iluzija gibanja. Predpostavimo, da imate tri okvirje: okvir0, okvir1, in okvir2. Na začetku lahko prikažete okvir0.

Ustvari novo datoteko z imenom animate.py in dodajte kodo s spodnjimi posodobitvami:


# Naloži okvirje
okvir0 = pygame. Površina((20, 20))
frame0.fill((255, 0, 0))

okvir1 = pygame. Površina((20, 20))
frame1.fill((0, 255, 0))

okvir2 = pygame. Površina((20, 20))
frame2.fill((0, 0, 255))

# Nastavite začetni okvir
trenutni_okvir = okvir0

# Igralna zanka
medtem teče:
# ...

# Upodobite igro
# ...
screen.blit (trenutni_okvir, (igralec_x, igralec_y))

pygame.display.flip()

# ...

Upravljanje animacij z vnosom igralca

Če želite animirati igralčev sprite, lahko preklapljate med različnimi okvirji glede na igralčev vnos. Na primer, ko se igralec premakne v levo ali desno s puščičnimi tipkami, lahko ponavljate med okvirji, da ustvarite iluzijo gibanja.

# Igralna zanka
medtem teče:
# ...

# Obravnava vnos igralca
tipke = pygame.key.get_pressed()
če ključi [pygame. K_LEVO]:
igralec_x -= hitrost_igralca
trenutni_okvir = okvir1
elif ključi [pygame. K_DESNO]:
igralec_x += hitrost_igralca
trenutni_okvir = okvir2
drugače:
trenutni_okvir = okvir0

# Upodobite igro
# ...
screen.blit (trenutni_okvir, (igralec_x, igralec_y))

pygame.display.flip()

# ...

Spodaj je rezultat:

Vključno z dodatnimi funkcijami

Poleg osnovne funkcionalnosti animacije Pygame ponuja več dodatnih funkcij za izboljšanje vaše izkušnje pri razvoju iger.

Sprite listi

Namesto nalaganja posameznih okvirjev lahko uporabite liste sprite, ki vsebujejo več okvirjev v eni sliki. Pygame ponuja funkcije za ekstrahiranje in prikaz določenih območij lista sprite. Tukaj je primer:

# Naloži sliko sprite sheet
sprite_sheet = pygame.image.load("spritesheet.png")

# Določite dimenzije vsakega okvirja
širina_okvirja = 32
višina_okvirja = 32

# Funkcija za pridobivanje okvirjev iz lista sprite
defizvleček_okvirjev(list, širina_okvirja, višina_okvirja):
# koda za ekstrahiranje okvirjev

# Ekstrahirajte okvirje iz lista sprite
okvirji = izvleček_okvirov (list_sprite_sheet, frame_width, frame_height)

# Prikažite okvir iz lista sprite
trenutni_okvir = okvirji [0]

# Igralna zanka
medtem teče:
# ...
screen.blit (trenutni_okvir, (igralec_x, igralec_y))
# ...

Hitrost animacije

Hitrost svojih animacij lahko nadzorujete tako, da uvedete časovne zamike med posodobitvami okvirjev. To omogoča gladko in realistično gibanje. Tukaj je primer, kako lahko nadzirate hitrost animacije uporabljati čas modul:

# Spremenljivke hitrosti animacije
animation_delay = 100# Zamik v milisekundah med posodobitvami okvirja
last_frame_time = pygame.time.get_ticks()

# Igralna zanka
medtem teče:
# ...

# Preverite, ali je minilo dovolj časa za posodobitev okvirja
trenutni_čas = pygame.time.get_ticks()
če trenutni_čas - zadnji_čas_sličice >= zakasnitev_animacije:
# Posodobite okvir

# Upodobite igro
# ...
screen.blit (trenutni_okvir, (igralec_x, igralec_y))

pygame.display.flip()

Zaznavanje trčenja

Pygame ponuja funkcije zaznavanja trkov za zaznavanje interakcij med animiranimi predmeti, kot je npr zaznavanje, ko igralec trči v platformo. Tu je primer, kako v svojo igro vključiti zaznavanje trkov:

# Zaznavanje trčenja
defpreveri_trk(player_rect, platform_rect):
če player_rect.colliderect (platform_rect):
# Prišlo je do trka
vrnitevPrav
drugače:
vrnitevFalse

# Igralna zanka
medtem teče:
# ...

# Izvedite zaznavanje trkov
player_rect = pygame. Rect (player_x, player_y, 20, 20)
platform_rect = pygame. Rect (platforma_x, platforma_y,
platform_width, platform_height)

če check_collision (player_rect, platform_rect):
# Obvladajte trčenje

# Upodobite igro
# ...
screen.blit (trenutni_okvir, (igralec_x, igralec_y))

pygame.display.flip()

Z uporabo teh dodatnih funkcij lahko razširite svoje zmožnosti razvoja iger in ustvarite bolj dinamične in poglobljene igralne izkušnje. Eksperimentirajte z različnimi tehnikami, jih ustvarjalno kombinirajte in pustite domišljiji, da vas vodi pri ustvarjanju resnično privlačnih iger.

Najboljše prakse za ustvarjanje animacije v Pygame

Pri dodajanju animacije v vaše projekte Pygame je pomembno, da upoštevate nekaj najboljših praks, da optimizirate svojo izvedbo in zagotovite gladke in učinkovite animacije. Upoštevajte naslednje smernice:

Prednalaganje in shranjevanje okvirjev v pomnilnik

Nalaganje slik z diska med zanko igre lahko povzroči zamude in vpliva na zmogljivost. Da bi se temu izognili, vnaprej naložite svoje okvirje in jih shranite v pomnilnik, preden se začne igralna zanka. Na ta način lahko hitro dostopate do okvirjev in jih prikažete med izvajanjem brez kakršnih koli V/I stroškov.

Uporabite vgrajene razrede Sprite in animacije Pygame

Pygame ponuja vgrajene razrede, kot je pygame.sprite. Sprite in pygame.sprite. skupina ki poenostavlja upravljanje spritov in animacij. Z uporabo teh razredov lahko učinkoviteje obravnavate zaznavanje trkov, skupinske posodobitve in upodabljanje.

Optimizirajte slikovne formate

Razmislite o optimizaciji slikovnih formatov za boljše delovanje. Pygame podpira različne formate slik, vključno z PNG in JPEG. PNG je na splošno priporočljiv za slike s prosojnostjo, medtem ko je JPEG primeren za statične slike brez prosojnosti.

Eksperimentirajte z različnimi formati slik in stopnjami stiskanja, da poiščete optimalno ravnovesje med kakovostjo slike in velikostjo datoteke.

Uporabite ustrezno hitrost sličic

Da bi dosegli gladke animacije, je pomembno, da nastavite ustrezno hitrost sličic. Pygame ponuja pygame.time. Ura razred, ki pomaga nadzorovati hitrost sličic z uravnavanjem hitrosti igralne zanke.

S klicem na kljukica() metode predmeta Clock na koncu vsake ponovitve lahko ohranite dosledno hitrost sličic. Prilagodite hitrost sličic glede na kompleksnost vaših animacij in zmožnosti delovanja vaše ciljne platforme.

Z upoštevanjem teh najboljših praks lahko optimizirate izvedbo svoje animacije, izboljšate zmogljivost svojih iger ter ustvarite vizualno privlačne in privlačne izkušnje za svoje igralce.

Naredite igre bolj zabavne z animacijami

Dodajanje animacije vašim igram lahko močno izboljša celotno izkušnjo igralca. Animacije oživijo like in predmete, zaradi česar so gibi bolj tekoči in privlačnejši. Ne glede na to, ali gre za skakanje likov, napadanje sovražnikov ali interakcijo predmetov, animacije naredijo vaš svet igre bolj poglobljen in vizualno privlačen.

Z izkoriščanjem animacijskih zmogljivosti Pygame lahko očarate svoje igralce in ustvarite igre, ki pustijo trajen vtis.