Knižnica Arcade v Pythone vás pokryje, od najjednoduchších farebných animácií až po zložité modelovanie častíc.

Animácia zohráva dôležitú úlohu pri zvyšovaní vizuálnej príťažlivosti a zapojenia videohier. Knižnica Arcade je rámec Pythonu na vytváranie 2D hier. Ponúka priamy a efektívny spôsob, ako začleniť animácie do vašich herných projektov.

Knižnicu Arcade môžete použiť na vytváranie základných pohybových animácií a synchronizovaných animácií s hernými udalosťami.

Vytvorte jednoduchú hru

Pred začatím sa uistite, že máte pip nainštalovaný na vašom zariadení. Na inštaláciu arkádovej knižnice použite tento príkaz:

arkáda na inštaláciu pipu

Potom vytvorte súbor Python s názvom jednoduchá hra.py a začnite nastavením hry, v ktorej sa hráč môže pohybovať doľava a doprava.

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.

Pomocou knižnice Arcade môžete vytvoriť okno, nastaviť herné prostredie a spracovávať vstupy hráčov. Tu je útržok kódu na začiatok:

instagram viewer
importovať pasáž

SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600

triedaMyGame(arkáda. okno):
def__init__(ja):
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "Moja hra")
self.player_x = SCREEN_WIDTH // 2
self.player_y = SCREEN_HEIGHT // 2

defon_draw(ja):
arcade.start_render()
col = arkáda.farba. MODRÁ
arcade.draw_circle_filled (self.player_x, self.player_y, 20, col)

defon_key_press(ja, kľúč, modifikátory):
ak kľúč == arcade.key. VĽAVO:
self.player_x -= 10
elif kľúč == arcade.key. SPRÁVNY:
self.player_x += 10

defHlavná():
hra = MyGame()
arcade.run()

ak __meno__ == "__Hlavná__":
Hlavná()

Pridajte základnú animáciu pohybu

Teraz posuňte svoju hru o krok ďalej a pridajte základnú animáciu pohybu k objektu hráča. Na animáciu hráč v pohybe, vytvorte 3 rôzne kruhy a iterujte medzi nimi postupne, keď sa hráč začne pohybovať. Tu je aktualizovaný útržok kódu pre pohyb-animácia.py súbor:

triedaMyGame(arkáda. okno):
def__init__(ja):
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "Moja hra")
self.player_x = SCREEN_WIDTH // 2
self.player_y = SCREEN_HEIGHT // 2
self.frame_counter = 0

defon_draw(ja):
arcade.start_render()
col1 = arkáda.farba. MODRÁ
col2 = arkáda.farba. ZELENÁ
col3 = arkáda.farba. ČERVENÁ

ak self.frame_counter < 10:
arcade.draw_circle_filled (self.player_x, self.player_y, 20,col1)
elif self.frame_counter < 20:
arcade.draw_circle_filled (self.player_x, self.player_y, 20,col2)
inak:
arcade.draw_circle_filled (self.player_x, self.player_y, 20, stĺpec3)

defon_key_press(ja, kľúč, modifikátory):
ak kľúč == arcade.key. VĽAVO:
self.player_x -= 10
self.frame_counter = (self.frame_counter + 1) % 30
elif kľúč == arcade.key. SPRÁVNY:
self.player_x += 10
self.frame_counter = (self.frame_counter + 1) % 30

Tu je príklad výstupného rámca:

Ovládanie rýchlosti a smeru animácie

Na ovládanie rýchlosti animácie môžete zaviesť systém snímkovej frekvencie. Môžete tiež zmeniť poradie snímok v závislosti od smeru pohybu hráča. Keď sa prehrávač pohybuje zľava doprava, snímky sa zobrazia v opačnom poradí.

Tu je upravený útržok kódu pre snímková frekvencia.py súbor:

triedaMyGame(arkáda. okno):
def__init__(ja):
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "Moja hra")
self.player_x = SCREEN_WIDTH // 2
self.player_y = SCREEN_HEIGHT // 2
self.frame_counter = 0
col1 = arkáda.farba. MODRÁ
col2 = arkáda.farba. ZELENÁ
col3 = arkáda.farba. ČERVENÁ
self.frames = [col1, col2, col3]
self.frame_rate = 10

defon_draw(ja):
arcade.start_render()
frame_index = self.frame_counter // self.frame_rate % len (self.frames)

ak self.player_x < SCREEN_WIDTH // 2:
frame_index = len (self.frames) - 1 - frame_index

index = self.frames[frame_index]
arcade.draw_circle_filled (self.player_x, self.player_y, 20, index)

defon_key_press(ja, kľúč, modifikátory):
ak kľúč == arcade.key. VĽAVO:
self.player_x -= 10
self.frame_counter += 1
elif kľúč == arcade.key. SPRÁVNY:
self.player_x += 10
self.frame_counter += 1

Použite operátor modulu % s len (self.frames) aby sa zabezpečilo, že frame_index vždy zostáva v rozsahu dostupných rámov. Tým sa zabráni IndexError od výskytu, keď animácia prechádza snímkami.

Upravte snímok za sekundu hodnotu na ovládanie rýchlosti animácie a vychutnajte si animovaný pohyb svojich herných objektov.

Vrátane ďalších funkcií

Knižnica Arcade poskytuje rôzne funkcie na vylepšenie vašich animácií.

Časticové efekty

Môžete vytvárať časticové efekty, ako sú výbuchy alebo dym, aby ste do svojej hry pridali realistickosť. Vytvorte súbor s názvom častica.py a pridajte nižšie uvedený kód pre jednoduchú implementáciu časticového systému pomocou Pythonu a arkádovej knižnice:

importovať pasáž
importovať náhodný

# Rozmery obrazovky
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600

# Farby
BIELA ​​= (255, 255, 255)

# Trieda častíc
triedaČastice:
def__init__(vlastné, x, y, dx, dy, polomer, farba, životnosť):
self.x = x
self.y = y
self.dx = dx
self.dy = dy
self.radius = polomer
self.color = farba
self.životnosť = životnosť

defaktualizovať(ja):
self.x += self.dx
self.y += self.dy
seba.životnosť -= 1

defkresliť(ja):
arcade.draw_circle_filled (self.x, self.y, self.radius, self.color)

# Herná trieda
triedaMyGame(arkáda. okno):
def__init__(ja, šírka, výška):
super().__init__(šírka, výška, "Príklad častíc")
vlastné.častice = []

defnastaviť(ja):
# Vytvorte častice
pre _ v rozsah(100):
x = random.randrange (SCREEN_WIDTH)
y = random.randrange (SCREEN_HEIGHT)
dx = random.uniform(-1, 1)
dy = random.uniform(-1, 1)
polomer = random.uniform(2, 5)
farba = arkáda.farba. BIELY
životnosť = random.randint(60, 120)
častica = častica (x, y, dx, dy, polomer, farba, životnosť)
self.particles.append (častica)

defon_draw(ja):
arcade.start_render()
pre častica v vlastné častice:
častica.draw()

defaktualizovať(self, delta_time):
pre častica v vlastné častice:
častica.update()

ak častica.životnosť <= 0:
self.particles.remove (častica)

defHlavná():
hra = MyGame (SCREEN_WIDTH, SCREEN_HEIGHT)
game.setup()
arcade.run()

ak __meno__ == "__Hlavná__":
Hlavná()

Mali by ste vidieť animáciu, ktorá zahŕňa veľa pohybujúcich sa častíc:

Interaktívne animácie

Implementujte interaktívne animácie, ktoré reagujú na vstup používateľa alebo herné udalosti. Napríklad, keď hráč interaguje s objektom, môže sa nejakým spôsobom animovať, zmeniť farbu alebo transformovať. Tieto interaktívne animácie poskytujú spätnú väzbu a zlepšujú zapojenie hráča do hry. Tu je kód pre interaktívna-animácia.py súbor:

importovať pasáž

# Rozmery obrazovky
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600

# Farby
BIELA ​​= (255, 255, 255)
ČERVENÁ = (255, 0, 0)

triedaMyGame(arkáda. okno):
def__init__(ja, šírka, výška):
super().__init__(šírka, výška, "Interaktívna animácia")
self.player_x = 400
self.player_y = 300
self.player_radius = 30
self.player_color = ČERVENÁ
self.animation_radius = 60
self.animation_color = BIELA
self.animation_active = Nepravdivé

defon_draw(ja):
arcade.start_render()

arcade.draw_circle_filled (self.player_x,
self.player_y,
self.player_radius,
self.player_color)

ak self.animation_active:
arcade.draw_circle_filled (self.player_x,
self.player_y,
self.animation_radius,
self.animation_color)

defon_mouse_press(vlastné, x, y, tlačidlo, modifikátory):
ak (self.player_x - self.player_radius <=
x <= self.player_x + self.player_radius a
self.player_y - self.player_radius <=
y <= self.player_y + self.player_radius
):
self.animation_active = Pravda

defaktualizovať(self, delta_time):
ak self.animation_active:
self.animation_radius += 1

ak self.animation_radius > 100:
self.animation_active = Nepravdivé
self.animation_radius = 0

defHlavná():
hra = MyGame (SCREEN_WIDTH, SCREEN_HEIGHT)
arcade.run()

ak __meno__ == "__Hlavná__":
Hlavná()

Prepíšte potrebné metódy, ako napr on_draw, on_mouse_press, a aktualizovať, aby ste zvládli kreslenie prehrávača a animácie, klikanie myšou a aktualizáciu animácie.

Ak chcete nakresliť hráča, použite arcade.draw_circle_filled funkciu, ktorá preberá (x, y) súradnice stredu, polomer a farba ako argumenty. Jednou z nich je funkcia draw_circle_filled Nástroje Arcade, ktoré môžete použiť na kreslenie herných prostriedkov. V tomto prípade môžete nakresliť rastúci kruh zmenou polomeru v priebehu času.

The on_mouse_press metóda sa spustí, keď používateľ klikne myšou. Skontroluje, či sú súradnice myši v rámci hraníc objektu hráča, a ak áno, aktivuje animáciu.

Osvedčené postupy na pridávanie animácií

Pri pridávaní animácií do hier zvážte nasledujúce osvedčené postupy:

Obmedzte počet animácií

Množstvo animácií s mnohými snímkami môže ovplyvniť výkon. Zvážte minimalizáciu počtu požadovaných animácií alebo snímok, najmä pre nekritické prvky v hre. Zjednodušenie animácií môže pomôcť zachovať konzistentnú snímkovú frekvenciu a optimalizovať využitie zdrojov.

Dávkové vykreslenie podobných objektov

Zoskupte podobné objekty, ktoré zdieľajú rovnaké rámce animácie a textúry, a vyrenderujte ich ako dávku. Dávkovanie znižuje počet výziev, čo vedie k zlepšeniu výkonu. Táto technika je užitočná najmä pri animácii objektov, ktoré používajú rovnaký hárok sprite alebo majú podobné animačné sekvencie.

Použite interpoláciu pre hladkú animáciu

Použite interpolačné techniky, ako je lineárna interpolácia (lerping), aby ste dosiahli hladké prechody animácií. Interpolácia vypočíta medziľahlé hodnoty medzi kľúčovými snímkami animácie, aby sa vytvorili plynulé pohyby. Tento prístup zabraňuje náhlym skokom alebo trhavým pohybom medzi snímkami, čo vedie k vizuálne príťažlivejším animáciám.

Zvážte rýchlosť a načasovanie animácie

Experimentujte s rôznymi rýchlosťami animácií a načasovaním, aby ste našli správnu rovnováhu pre svoju hru. Upravte trvanie snímky alebo použite rôzne sekvencie animácií na vytvorenie variácií rýchlosti, zrýchlenia alebo spomalenia. Tieto úpravy môžu pridať hĺbku a charakter animáciám vašej hry.

Testovať a optimalizovať

Pravidelne testujte svoje animácie na rôznych zariadeniach a sledujte výkon. Hľadajte potenciálne prekážky alebo spomalenia a podľa toho optimalizujte. Tento proces pomáha zabezpečiť plynulé a konzistentné zážitky z animácie na celom rade zariadení.

Urobte hry pútavejšími vďaka animácii

Pridanie animácií do vašich hier môže výrazne zvýšiť zapojenie a pohltenie hráčov. Animácie poskytujú vizuálnu spätnú väzbu na akcie hráčov, vďaka čomu je hra intuitívnejšia a zábavnejšia. Oživujú herné svety a vytvárajú pocit realizmu a vzrušenia.

Či už ide o bežiacu postavu, explodujúci objekt alebo jednoduchý prechodový efekt, animácie prispievajú k dynamickejšiemu a podmanivejšiemu hernému zážitku.