Pygame projekti bez animacije mogu biti nevjerojatno dosadni. Povećajte privlačnost svojih igara uključivanjem zadivljujućih animacija.

Animacija je ključni aspekt razvoja igre koji unosi život i dinamiku u vaše kreacije. Uključivanjem animacija možete stvoriti zadivljujuće vizuale i impresivna iskustva igranja za svoje igrače.

Pygame nudi opsežan skup alata koji pojednostavljuju proces stvaranja animacija. Omogućuje ugrađene značajke uključujući učitavanje i prikazivanje okvira, upravljanje animacijama pomoću unosa igrača i tako dalje.

Stvorite jednostavnu igru

Započnite stvaranjem jednostavne igre koja omogućuje igraču da se kreće lijevo i desno. Također igrici možete dodati platformu.

Kôd korišten u ovom članku dostupan je u ovom GitHub spremište i besplatan je za korištenje pod MIT licencom.

Napravite novu datoteku jednostavna igra.py i definirati neke varijable, uključujući početne pozicije i brzine za igrača i platformu. Ove varijable će se koristiti za kontrolu kretanja igračevog duha.

instagram viewer

Upravljanje unosom igrača dohvaćanjem stanja tipkovnice pomoću pygame.key.get_pressed(). Ako pritisnete lijevu tipku sa strelicom, možete smanjiti vrijednost igrač_x, a ako se pritisne desna strelica, možete ga povećati. Ovo stvara efekt kretanja za igračev sprite.

Vaša bi početna igra trebala izgledati ovako:

Učitavanje i prikazivanje okvira

Za izradu animacija, učitati i prikazati različite slike ili okviri animacije. Svaki okvir predstavlja određenu sliku ili sprite koji će biti prikazan u nizu kako bi se stvorila iluzija kretanja. Pretpostavimo da imate tri okvira: okvir0, okvir1, i okvir2. U početku možete prikazati okvir0.

Stvorite novu datoteku pod nazivom animirati.py i dodajte kod sa sljedećim ažuriranjima:


# Učitaj okvire
okvir0 = pygame. Površinski((20, 20))
frame0.fill((255, 0, 0))

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

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

# Postavite početni okvir
trenutni_okvir = okvir0

# Petlja igre
dok trčanje:
# ...

# Renderirajte igru
# ...
screen.blit (trenutni_okvir, (igrač_x, igrač_y))

pygame.display.flip()

# ...

Upravljanje animacijama s unosom igrača

Da biste animirali igračev sprite, možete se prebacivati ​​između različitih okvira na temelju igračevog unosa. Na primjer, kada se igrač pomiče ulijevo ili udesno pomoću tipki sa strelicama, možete iterirati između okvira kako biste stvorili iluziju kretanja.

# Petlja igre
dok trčanje:
# ...

# Rukovanje unosom igrača
tipke = pygame.key.get_pressed()
ako ključevi[pygame. K_LIJEVO]:
igrač_x -= brzina_igrača
trenutni_okvir = okvir1
elif ključevi[pygame. K_DESNO]:
igrač_x += brzina_igrača
trenutni_okvir = okvir2
drugo:
trenutni_okvir = okvir0

# Renderirajte igru
# ...
screen.blit (trenutni_okvir, (igrač_x, igrač_y))

pygame.display.flip()

# ...

Ispod je izlaz:

Uključujući dodatne značajke

Uz osnovnu funkcionalnost animacije, Pygame nudi nekoliko dodatnih značajki za poboljšanje vašeg iskustva razvoja igre.

Sprite listovi

Umjesto učitavanja pojedinačnih okvira, možete koristiti listove spriteova koji sadrže više okvira u jednoj slici. Pygame pruža funkcije za izdvajanje i prikaz specifičnih područja sprite lista. Evo primjera:

# Učitajte sliku lista spritea
sprite_sheet = pygame.image.load("spritesheet.png")

# Definirajte dimenzije svakog okvira
širina_okvira = 32
visina_okvira = 32

# Funkcija za izdvajanje okvira iz sprite lista
defekstrakt_okvira(list, širina_okvira, visina_okvira):
# kod za izdvajanje okvira

# Izdvojite okvire iz sprite lista
okviri = ekstrakt_okvira (list_spritea, širina_okvira, visina_okvira)

# Prikažite okvir iz lista spritea
trenutni_okvir = okviri[0]

# Petlja igre
dok trčanje:
# ...
screen.blit (trenutni_okvir, (igrač_x, igrač_y))
# ...

Brzina animacije

Možete kontrolirati brzinu svojih animacija uvođenjem vremenskih odgoda između ažuriranja okvira. To omogućuje glatko i realistično kretanje. Evo primjera kako možete kontrolirati brzinu animacije koristiti vrijeme modul:

# Varijable brzine animacije
odgoda_animacije = 100# Odgoda u milisekundama između ažuriranja okvira
vrijeme_posljednjeg_framea = pygame.time.get_ticks()

# Petlja igre
dok trčanje:
# ...

# Provjerite je li prošlo dovoljno vremena za ažuriranje okvira
trenutno_vrijeme = pygame.time.get_ticks()
ako trenutno_vrijeme - vrijeme_zadnjeg_sličica >= odgoda_animacije:
# Ažurirajte okvir

# Renderirajte igru
# ...
screen.blit (trenutni_okvir, (igrač_x, igrač_y))

pygame.display.flip()

Detekcija sudara

Pygame nudi funkcije otkrivanja sudara za otkrivanje interakcija između animiranih objekata, kao što je otkrivanje kada se igrač sudari s platformom. Evo primjera kako uključiti otkrivanje sudara u svoju igru:

# Otkrivanje sudara
defprovjera_kolizije(player_rect, platform_rect):
ako player_rect.colliderect (platform_rect):
# Došlo je do sudara
povratakPravi
drugo:
povrataklažno

# Petlja igre
dok trčanje:
# ...

# Izvedite detekciju sudara
player_rect = pygame. Rect (player_x, player_y, 20, 20)
platform_rect = pygame. Prav (platforma_x, platforma_y,
platform_width, platform_height)

ako check_collision (player_rect, platform_rect):
# Rješavanje sudara

# Renderirajte igru
# ...
screen.blit (trenutni_okvir, (igrač_x, igrač_y))

pygame.display.flip()

Korištenjem ovih dodatnih značajki možete proširiti svoje mogućnosti razvoja igara i stvoriti dinamičnija i impresivnija iskustva igranja. Eksperimentirajte s različitim tehnikama, kreativno ih kombinirajte i dopustite svojoj mašti da vas vodi u izradi doista zanimljivih igara.

Najbolji primjeri iz prakse za stvaranje animacije u Pygameu

Kada dodajete animaciju svojim Pygame projektima, važno je slijediti neke najbolje prakse kako biste optimizirali svoju implementaciju i osigurali glatke i učinkovite animacije. Razmotrite sljedeće smjernice:

Prethodno učitavanje i pohranjivanje okvira u memoriju

Učitavanje slika s diska tijekom petlje igre može uzrokovati kašnjenja i utjecati na performanse. Da biste to izbjegli, unaprijed učitajte svoje okvire i pohranite ih u memoriju prije početka petlje igre. Na ovaj način možete brzo pristupiti i prikazati okvire tijekom izvođenja bez ikakvog I/O opterećenja diska.

Iskoristite Pygameove ugrađene Sprite i klase animacije

Pygame nudi ugrađene klase poput pygame.sprite. Sprite i pygame.sprite. Skupina koji pojednostavljuje upravljanje spriteovima i animacijama. Upotrebom ovih klasa možete učinkovitije upravljati detekcijom sudara, grupnim ažuriranjem i renderiranjem.

Optimizirajte formate slika

Razmislite o optimiziranju formata slike za bolju izvedbu. Pygame podržava različite formate slika, uključujući PNG i JPEG. PNG se općenito preporučuje za slike s prozirnošću, dok je JPEG prikladan za statične slike bez prozirnosti.

Eksperimentirajte s različitim formatima slika i razinama kompresije kako biste pronašli optimalnu ravnotežu između kvalitete slike i veličine datoteke.

Koristite ispravan broj sličica u sekundi

Kako biste postigli glatke animacije, važno je postaviti odgovarajući broj sličica u sekundi. Pygame pruža pygame.vrijeme. Sat klasa, koja pomaže kontrolirati broj sličica u sekundi reguliranjem brzine petlje igre.

Pozivom na označiti () metode objekta Clock na kraju svake iteracije, možete održavati dosljednu brzinu sličica u sekundi. Prilagodite broj sličica u sekundi na temelju složenosti vaših animacija i izvedbenih mogućnosti vaše ciljane platforme.

Slijedeći ove najbolje prakse, možete optimizirati svoju implementaciju animacije, poboljšati izvedbu svojih igara i stvoriti vizualno privlačna i privlačna iskustva za svoje igrače.

Učinite igre zabavnijim uz animacije

Dodavanje animacije vašim igrama može uvelike poboljšati cjelokupno iskustvo igrača. Animacije oživljavaju likove i objekte, čineći pokrete glatkijim i privlačnijim. Bilo da se radi o liku koji skače, neprijateljima koji napadaju ili objektima u interakciji, animacije čine vaš svijet igre sveobuhvatnijim i vizualno privlačnijim.

Iskorištavanjem Pygameovih mogućnosti animacije možete očarati svoje igrače i stvoriti igre koje ostavljaju trajan dojam.