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:
importovať pasáž
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600triedaMyGame(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 // 2defon_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 += 10defHlavná():
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 = 0defon_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 = 10defon_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_indexindex = 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ť -= 1defkresliť(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 = Pravdadefaktualizovať(self, delta_time):
ak self.animation_active:
self.animation_radius += 1ak self.animation_radius > 100:
self.animation_active = Nepravdivé
self.animation_radius = 0defHlavná():
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.