Projekty Pygame, ktorým chýba animácia, môžu byť neuveriteľne nudné. Zvýšte príťažlivosť svojich hier začlenením podmanivých animácií.

Animácia je kľúčovým aspektom vývoja hier, ktorý do vašich výtvorov vnáša život a dynamiku. Začlenením animácií môžete pre svojich hráčov vytvoriť podmanivé vizuálne prvky a pohlcujúce herné zážitky.

Pygame poskytuje komplexnú sadu nástrojov, ktoré zjednodušujú proces vytvárania animácií. Poskytuje vstavané funkcie vrátane načítania a zobrazenia snímok, ovládania animácií pomocou vstupu prehrávača atď.

Vytvorte jednoduchú hru

Začnite vytvorením jednoduchej hry, ktorá umožňuje hráčovi pohybovať sa doľava a doprava. Do hry môžete pridať aj platformu.

Kód použitý v tomto článku je dostupný v tomto úložisko GitHub a môžete ho bezplatne používať na základe licencie MIT.

Vytvorte nový súbor jednoduchá hra.py a definovať niektoré premenné, vrátane počiatočných pozícií a rýchlostí pre hráča a platformu. Tieto premenné budú použité na ovládanie pohybu hráčovho sprite.

instagram viewer

Spravujte vstup prehrávača načítaním stavu klávesnice pomocou pygame.key.get_pressed(). Ak stlačíte kláves so šípkou doľava, môžete znížiť hodnotu hráč_xa ak stlačíte kláves so šípkou doprava, môžete ju zvýšiť. To vytvára pohybový efekt pre hráčovho škriatka.

Vaša úvodná hra by mala vyzerať takto:

Načítanie a zobrazenie rámov

Ak chcete vytvoriť animácie, načítať a zobraziť rôzne obrázky alebo snímky animácie. Každý rám predstavuje špecifický obrázok alebo sprite, ktorý sa zobrazí v sekvencii, aby vytvoril ilúziu pohybu. Predpokladajme, že máte tri rámce: rám 0, rám1, a rám2. Spočiatku môžete zobraziť rám 0.

Vytvorte nový súbor s názvom animovať.py a pridajte kód s nižšie uvedenými aktualizáciami:


# Načítať rámy
frame0 = pygame. Povrch((20, 20))
frame0.fill((255, 0, 0))

frame1 = pygame. Povrch((20, 20))
frame1.fill((0, 255, 0))

frame2 = pygame. Povrch((20, 20))
frame2.fill((0, 0, 255))

# Nastavte počiatočný rámec
aktuálny_rámec = rámec0

# Herná slučka
zatiaľ čo beh:
# ...

# Renderujte hru
# ...
screen.blit (aktuálny_rámec, (hráč_x, hráč_y))

pygame.display.flip()

# ...

Ovládanie animácií pomocou vstupu prehrávača

Ak chcete animovať sprite hráča, môžete prepínať medzi rôznymi snímkami na základe vstupu hráča. Napríklad, keď sa hráč pohybuje doľava alebo doprava pomocou klávesov so šípkami, môžete iterovať medzi snímkami, aby ste vytvorili ilúziu pohybu.

# Herná slučka
zatiaľ čo beh:
# ...

# Ovládanie vstupu prehrávača
keys = pygame.key.get_pressed()
ak kľúče [pygame. K_LEFT]:
player_x -= player_speed
aktuálny_rámec = snímka1
elif kľúče [pygame. K_RIGHT]:
player_x += player_speed
aktuálny_rámec = rámec2
inak:
aktuálny_rámec = rámec0

# Renderujte hru
# ...
screen.blit (aktuálny_rámec, (hráč_x, hráč_y))

pygame.display.flip()

# ...

Nižšie je výstup:

Vrátane ďalších funkcií

Okrem základnej funkcie animácie ponúka Pygame niekoľko ďalších funkcií na zlepšenie vášho zážitku z vývoja hier.

Sprite Listy

Namiesto načítania jednotlivých snímok môžete použiť hárky sprite, ktoré obsahujú viacero snímok v jednom obrázku. Pygame poskytuje funkcie na extrahovanie a zobrazenie konkrétnych oblastí hárku sprite. Tu je príklad:

# Načítajte obrázok hárku sprite
sprite_sheet = pygame.image.load("spritesheet.png")

# Definujte rozmery každého rámu
frame_width = 32
frame_height = 32

# Funkcia na extrahovanie snímok z hárku sprite
defextrahovať_rámce(list, frame_width, frame_height):
# kód na extrahovanie snímok

# Extrahujte snímky z hárku sprite
frames = extract_frames (sprite_sheet, frame_width, frame_height)

# Zobrazte rám z hárku sprite
aktuálny_rámec = snímky[0]

# Herná slučka
zatiaľ čo beh:
# ...
screen.blit (aktuálny_rámec, (hráč_x, hráč_y))
# ...

Rýchlosť animácie

Rýchlosť svojich animácií môžete ovládať zavedením časového oneskorenia medzi aktualizáciami snímok. To umožňuje plynulý a realistický pohyb. Tu je príklad toho, ako môžete ovládať rýchlosť animácie pomocou čas modul:

# Premenné rýchlosti animácie
animation_delay = 100# Oneskorenie v milisekundách medzi aktualizáciami snímok
last_frame_time = pygame.time.get_ticks()

# Herná slučka
zatiaľ čo beh:
# ...

# Skontrolujte, či uplynul dostatok času na aktualizáciu rámu
current_time = pygame.time.get_ticks()
ak aktuálny_čas - čas_posledného_snímku >= oneskorenie_animácie:
# Aktualizujte rám

# Renderujte hru
# ...
screen.blit (aktuálny_rámec, (hráč_x, hráč_y))

pygame.display.flip()

Detekcia kolízie

Pygame ponúka funkcie detekcie kolízií na detekciu interakcií medzi animovanými objektmi, ako napr zisťuje, kedy sa hráč zrazí s plošinou. Tu je príklad, ako začleniť detekciu kolízií do vašej hry:

# Detekcia kolízie
defcheck_collision(player_rect, platform_rect):
ak player_rect.colliderect (platform_rect):
# Došlo ku kolízii
vrátiťPravda
inak:
vrátiťNepravdivé

# Herná slučka
zatiaľ čo beh:
# ...

# Vykonajte detekciu kolízie
player_rect = pygame. Rect (player_x, player_y, 20, 20)
platform_rect = pygame. Obdĺžnik (platforma_x, platforma_y,
platform_width, platform_height)

ak check_collision (player_rect, platform_rect):
# Kolízia rukoväte

# Renderujte hru
# ...
screen.blit (aktuálny_rámec, (hráč_x, hráč_y))

pygame.display.flip()

Využitím týchto dodatočných funkcií môžete rozšíriť svoje možnosti vývoja hier a vytvoriť dynamickejšie a pohlcujúcejšie herné zážitky. Experimentujte s rôznymi technikami, kreatívne ich kombinujte a nechajte sa viesť svojou fantáziou pri vytváraní skutočne pútavých hier.

Najlepšie postupy na vytváranie animácií v Pygame

Pri pridávaní animácií do vašich projektov Pygame je dôležité dodržiavať niektoré osvedčené postupy na optimalizáciu implementácie a zabezpečenie plynulých a efektívnych animácií. Zvážte nasledujúce pokyny:

Vopred načítajte a uložte snímky do pamäte

Načítanie obrázkov z disku počas hernej slučky môže spôsobiť oneskorenie a ovplyvniť výkon. Aby ste tomu zabránili, pred spustením hernej slučky vopred načítajte snímky a uložte ich do pamäte. Týmto spôsobom môžete rýchlo pristupovať k rámcom a zobrazovať ich počas behu bez akejkoľvek réžie diskových I/O.

Využite vstavané triedy Sprite a animácie Pygame

Pygame poskytuje vstavané triedy ako pygame.sprite. Sprite a pygame.sprite. Skupina čo zjednodušuje správu spritov a animácií. Využitím týchto tried môžete efektívnejšie zvládnuť detekciu kolízií, skupinové aktualizácie a vykresľovanie.

Optimalizujte obrazové formáty

Zvážte optimalizáciu formátov obrázkov pre lepší výkon. Pygame podporuje rôzne obrazové formáty vrátane PNG a JPEG. PNG sa vo všeobecnosti odporúča pre obrázky s priehľadnosťou, zatiaľ čo JPEG je vhodný pre statické obrázky bez priehľadnosti.

Experimentujte s rôznymi formátmi obrázkov a úrovňami kompresie, aby ste našli optimálnu rovnováhu medzi kvalitou obrázka a veľkosťou súboru.

Používajte správne obnovovacie frekvencie

Na dosiahnutie plynulých animácií je dôležité nastaviť vhodnú snímkovú frekvenciu. Pygame poskytuje pygame.time. Hodiny trieda, ktorá pomáha kontrolovať snímkovú frekvenciu reguláciou rýchlosti hernej slučky.

Zavolaním na tick() metódou objektu Clock na konci každej iterácie môžete zachovať konzistentnú snímkovú frekvenciu. Upravte snímkovú frekvenciu na základe zložitosti vašich animácií a výkonnostných možností vašej cieľovej platformy.

Dodržiavaním týchto osvedčených postupov môžete optimalizovať implementáciu animácií, zlepšiť výkon svojich hier a vytvoriť pre svojich hráčov vizuálne príťažlivé a pútavé zážitky.

Urobte hry zábavnejšie s animáciami

Pridanie animácie do vašich hier môže výrazne zlepšiť celkový zážitok z hráča. Animácie oživujú postavy a predmety, vďaka čomu sú pohyby plynulejšie a pútavejšie. Či už ide o skákanie postavy, útok nepriateľov alebo interakciu predmetov, animácie urobia váš herný svet pohlcujúcim a vizuálne príťažlivejším.

Využitím animačných schopností Pygame môžete zaujať svojich hráčov a vytvoriť hry, ktoré zanechajú trvalý dojem.