Knihovna Arcade v Pythonu vás pokryje, od nejjednodušších barevných animací až po složité modelování částic.

Animace hraje zásadní roli při zvyšování vizuální přitažlivosti a zapojení videoher. Knihovna Arcade je framework Pythonu pro vytváření 2D her. Nabízí přímý a efektivní způsob, jak začlenit animace do vašich herních projektů.

Knihovnu Arcade můžete použít k vytvoření základních pohybových animací a synchronizovaných animací s herními událostmi.

Vytvořte jednoduchou hru

Než začnete, ujistěte se, že máte pip nainstalovaný na vašem zařízení. K instalaci arkádové knihovny použijte tento příkaz:

pip instalační arkáda

Poté vytvořte soubor Python s názvem jednoduchá hra.py a začněte nastavením hry, kde se hráč může pohybovat doleva a doprava.

Kód použitý v tomto článku je k dispozici v tomto úložiště GitHub a můžete jej používat zdarma pod licencí MIT.

Pomocí knihovny Arcade můžete vytvořit okno, nastavit herní prostředí a zpracovat vstup hráče. Zde je úryvek kódu, jak začít:

import pasáž

SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600

instagram viewer

třídaMyGame(pasáž. Okno):
def__init__(já):
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "Moje hra")
self.player_x = SCREEN_WIDTH // 2
self.player_y = SCREEN_HEIGHT // 2

defon_draw(já):
arcade.start_render()
col = arkáda.barva. MODRÝ
arcade.draw_circle_filled (self.player_x, self.player_y, 20, col)

defon_key_press(vlastní, klíč, modifikátory):
-li klíč == arcade.key. VLEVO, ODJET:
self.player_x -= 10
elif klíč == arcade.key. ŽE JO:
self.player_x += 10

defhlavní():
hra = MyGame()
arcade.run()

-li __jméno__ == "__hlavní__":
hlavní()

Přidejte základní animaci pohybu

Nyní posuňte svou hru o krok dále a přidejte základní pohybovou animaci k předmětu hráče. K animaci hráč v pohybu, vytvořte 3 různé kruhy a iterujte mezi nimi postupně, když se hráč začne pohybovat. Zde je aktualizovaný fragment kódu pro pohyb-animace.py soubor:

třídaMyGame(pasáž. Okno):
def__init__(já):
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "Moje hra")
self.player_x = SCREEN_WIDTH // 2
self.player_y = SCREEN_HEIGHT // 2
self.frame_counter = 0

defon_draw(já):
arcade.start_render()
col1 = arkáda.barva. MODRÝ
col2 = arkáda.barva. ZELENÁ
col3 = arkáda.barva. ČERVENÉ

-li 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)
jiný:
arcade.draw_circle_filled (self.player_x, self.player_y, 20, col3)

defon_key_press(vlastní, klíč, modifikátory):
-li klíč == arcade.key. VLEVO, ODJET:
self.player_x -= 10
self.frame_counter = (self.frame_counter + 1) % 30
elif klíč == arcade.key. ŽE JO:
self.player_x += 10
self.frame_counter = (self.frame_counter + 1) % 30

Zde je příklad výstupního rámce:

Ovládání rychlosti a směru animace

Chcete-li ovládat rychlost animace, můžete zavést systém snímkové frekvence. Můžete také změnit pořadí snímků v závislosti na směru pohybu hráče. Když se přehrávač pohybuje zleva doprava, snímky se zobrazí v opačném pořadí.

Zde je upravený fragment kódu pro snímková frekvence.py soubor:

třídaMyGame(pasáž. Okno):
def__init__(já):
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "Moje hra")
self.player_x = SCREEN_WIDTH // 2
self.player_y = SCREEN_HEIGHT // 2
self.frame_counter = 0
col1 = arkáda.barva. MODRÝ
col2 = arkáda.barva. ZELENÁ
col3 = arkáda.barva. ČERVENÉ
self.frames = [sloupec1, sloupec2, sloupec3]
self.frame_rate = 10

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

-li 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(vlastní, klíč, modifikátory):
-li klíč == arcade.key. VLEVO, ODJET:
self.player_x -= 10
self.frame_counter += 1
elif klíč == arcade.key. ŽE JO:
self.player_x += 10
self.frame_counter += 1

Použijte operátor modulu % s len (self.frames) zajistit, aby frame_index vždy zůstává v rozsahu dostupných rámů. Tím se zabrání IndexError od výskytu, když animace prochází snímky.

Upravte snímková frekvence hodnotu pro ovládání rychlosti animace a užijte si animovaný pohyb vašich herních objektů.

Včetně dalších funkcí

Knihovna Arcade poskytuje různé funkce pro vylepšení vašich animací.

Částicové efekty

Můžete vytvářet částicové efekty, jako jsou výbuchy nebo kouř, a přidat tak vaší hře realističnost. Vytvořte soubor s názvem částice.py a přidejte níže uvedený kód pro jednoduchou implementaci částicového systému pomocí Pythonu a arkádové knihovny:

import pasáž
import náhodný

# Rozměry obrazovky
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600

# Barvy
BÍLÁ = (255, 255, 255)

# Třída částic
třídaČástice:
def__init__(vlastní, x, y, dx, dy, poloměr, barva, životnost):
self.x = x
self.y = y
self.dx = dx
sebe.dy = dy
self.radius = rádius
self.color = barva
sebe.životnost = životnost

defAktualizace(já):
self.x += self.dx
self.y += self.dy
vlastní.životnost -= 1

defkreslit(já):
arcade.draw_circle_filled (self.x, self.y, self.radius, self.color)

# Herní třída
třídaMyGame(pasáž. Okno):
def__init__(vlastní, šířka, výška):
super().__init__(šířka, výška, "Příklad částic")
vlastní.částice = []

defzaložit(já):
# Vytvořte částice
pro _ v rozsah(100):
x = random.randrange (SCREEN_WIDTH)
y = random.randrange (SCREEN_HEIGHT)
dx = random.uniform(-1, 1)
dy = random.uniform(-1, 1)
poloměr = random.uniform(2, 5)
barva = arkáda.barva. BÍLÝ
životnost = random.randint(60, 120)
částice = Částice (x, y, dx, dy, poloměr, barva, životnost)
self.particles.append (částice)

defon_draw(já):
arcade.start_render()
pro částice v vlastní částice:
částice.draw()

defAktualizace(self, delta_time):
pro částice v vlastní částice:
částic.update()

-li částice.životnost <= 0:
self.particles.remove (částice)

defhlavní():
hra = MyGame (SCREEN_WIDTH, SCREEN_HEIGHT)
game.setup()
arcade.run()

-li __jméno__ == "__hlavní__":
hlavní()

Měli byste vidět animaci, která zahrnuje mnoho pohybujících se částic:

Interaktivní animace

Implementujte interaktivní animace, které reagují na vstup uživatele nebo herní události. Například, když hráč interaguje s objektem, může se nějakým způsobem animovat, změnit barvu nebo transformovat. Tyto interaktivní animace poskytují zpětnou vazbu a zlepšují zapojení hráče do hry. Zde je kód pro interaktivní-animace.py soubor:

import pasáž

# Rozměry obrazovky
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600

# Barvy
BÍLÁ = (255, 255, 255)
ČERVENÁ = (255, 0, 0)

třídaMyGame(pasáž. Okno):
def__init__(vlastní, šířka, výška):
super().__init__(šířka, výška, "Interaktivní animace")
self.player_x = 400
self.player_y = 300
self.player_radius = 30
self.player_color = ČERVENÁ
self.animation_radius = 60
self.animation_color = BÍLÁ
self.animation_active = Nepravdivé

defon_draw(já):
arcade.start_render()

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

-li 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čítko, modifikátory):
-li (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 = Skutečný

defAktualizace(self, delta_time):
-li self.animation_active:
self.animation_radius += 1

-li self.animation_radius > 100:
self.animation_active = Nepravdivé
self.animation_radius = 0

defhlavní():
hra = MyGame (SCREEN_WIDTH, SCREEN_HEIGHT)
arcade.run()

-li __jméno__ == "__hlavní__":
hlavní()

Přepište potřebné metody, jako např on_draw, on_mouse_press, a Aktualizace, pro zpracování kreslení přehrávače a animace, zpracování kliknutí myší a aktualizace animace.

Chcete-li nakreslit hráče, použijte arcade.draw_circle_filled funkce, která přebírá (x, y) souřadnice středu, poloměr a barva jako argumenty. Jednou z nich je funkce draw_circle_filled Nástroje Arcade, které můžete použít k kreslení herních prostředků. V tomto případě můžete nakreslit rostoucí kruh změnou poloměru v průběhu času.

The on_mouse_press metoda se spustí, když uživatel klikne myší. Zkontroluje, zda jsou souřadnice myši v mezích objektu přehrávače, a pokud ano, aktivuje animaci.

Nejlepší postupy pro přidávání animací

Při přidávání animací do svých her zvažte následující doporučené postupy:

Omezte počet animací

Mnoho animací s mnoha snímky může ovlivnit výkon. Zvažte minimalizaci počtu požadovaných animací nebo snímků, zejména u nekritických prvků ve hře. Zjednodušení animací může pomoci udržet konzistentní snímkovou frekvenci a optimalizovat využití zdrojů.

Dávkové vykreslování podobných objektů

Seskupte podobné objekty, které sdílejí stejné snímky animace a textury, a vykreslete je jako dávku. Dávkování snižuje počet volání losování, což vede ke zlepšení výkonu. Tato technika je zvláště užitečná při animaci objektů, které používají stejný list sprite nebo mají podobné animační sekvence.

Použijte interpolaci pro plynulou animaci

Použijte interpolační techniky, jako je lineární interpolace (lerping), abyste dosáhli hladkých přechodů animace. Interpolace počítá mezilehlé hodnoty mezi klíčovými snímky animace, aby se vytvořily plynulé pohyby. Tento přístup zabraňuje náhlým skokům nebo trhavým pohybům mezi snímky, což má za následek vizuálně atraktivnější animace.

Zvažte rychlost a načasování animace

Experimentujte s různými rychlostmi animace a načasováním, abyste našli správnou rovnováhu pro vaši hru. Upravte dobu trvání snímku nebo použijte různé animační sekvence k vytvoření variací v rychlosti, zrychlení nebo zpomalení. Tyto úpravy mohou přidat hloubku a charakter animací vaší hry.

Testovat a optimalizovat

Pravidelně testujte své animace na různých zařízeních a sledujte výkon. Hledejte potenciální úzká hrdla nebo zpomalení a podle toho optimalizujte. Tento proces pomáhá zajistit plynulé a konzistentní zážitky z animace na celé řadě zařízení.

Udělejte hry poutavějšími s animací

Přidání animací do vašich her může výrazně zlepšit zapojení a ponoření hráče. Animace poskytují vizuální zpětnou vazbu k akcím hráčů, díky čemuž je hra intuitivnější a zábavnější. Oživují herní světy a vytvářejí pocit realismu a vzrušení.

Ať už jde o běžící postavu, explodující objekt nebo jednoduchý přechodový efekt, animace přispívají k dynamičtějšímu a podmanivějšímu hernímu zážitku.