Najjednoduchšie hry môžete oživiť animovanými časticami. Simulujte pohyb, výbuchy a ďalšie pomocou týchto techník.
Pygame je populárna knižnica na vývoj hier pomocou Pythonu. Pri vytváraní hier môže pridávanie špeciálnych efektov výrazne zvýšiť vizuálnu príťažlivosť a celkový zážitok pre hráčov.
Časticové systémy sú výkonnou technikou na vytváranie dynamických a vizuálne zaujímavých efektov, ako sú oblaky prachu, výbuchy, hmla a ďalšie.
Vytvorte jednoduchú hru
Pred ponorením do časticových systémov a vizuálnych vylepšení začnite vytvorením jednoduchej hry pomocou Pygame. Vytvorte nový súbor s názvom jednoduchá hra.py a začnite importovaním potrebných knižníc a inicializáciou Pygame. Nastavte herné okno s určenou šírkou a výškou.
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.
Vo vnútri hlavnej hernej slučky spravujte udalosti používateľov a aktualizujte pozíciu hráča na základe stlačenia klávesov. Nakreslite obdĺžnik pre objekt hráča, ktorý používa pygame.draw.rect().
Nakoniec aktualizujte okno hry pomocou pygame.display.flip() a ukončite hru, keď hráč opustí slučku. Táto jednoduchá hra poslúži ako základ pre pridávanie špeciálnych efektov pomocou časticových systémov.
Mali by ste vidieť biely štvorec predstavujúci hráča, ktorým sa môžete pohybovať doľava a doprava:
Vytváranie rôznych typov častíc
Teraz, keď máte nastavenú jednoduchú hru, môžete pridať rôzne časticové systémy. Vytvorte triedy častíc pre každý efekt a triedu systému častíc na správu a aktualizáciu častíc.
Efekt častíc, keď sa hráč pohybuje
Prvý časticový efekt bude stopa prachových častíc emitovaných z hráčovho chrbta, keď hráč začne pohyb pomocou myši alebo klávesnice. Smer prachových častíc sa navyše zmení, keď prehrávač zmení smer.
Definujte a Častice trieda, ktorá predstavuje individuálnu časticu. Každá častica má počiatočnú polohu (X a r), náhodná rýchlosť (dx a D Y) a životnosť, ktorá určuje, ako dlho bude častica existovať.
Tiež definujte a ParticleSystem trieda, ktorá spravuje kolekciu častíc. Novú časticu môžete do systému pridať pomocou add_particle() metóda. The aktualizovať() metóda aktualizuje všetky častice v systéme a odstraňuje častice, ktoré dosiahli koniec svojej životnosti.
# Trieda častíc
triedaČastice:
def__init__(ja, x, y):
self.x = x
self.y = y
self.dx = random.uniform(-1, 1)
self.dy = random.uniform(-1, 1)
seba.životnosť = 60defaktualizovať(ja):
self.x += self.dx
self.y += self.dy
seba.životnosť -= 1defkresliť(ja, okno):
farba = (200, 200, 200)
pozícia = (int (self.x), int (self.y))
pygame.draw.circle (okno, farba, poloha, 2)# Trieda časticového systému
triedaParticleSystem:
def__init__(ja):
vlastné.častice = []defpridať_časticu(ja, x, y):
self.particles.append (častica (x, y))defaktualizovať(ja):
pre častica v vlastné častice:
častica.update()ak častica.životnosť <= 0:
self.particles.remove (častica)
defkresliť(ja, okno):
pre častica v vlastné častice:
častica.kresliť (okno)
Ak chcete integrovať časticový systém do vašej hry, musíte vykonať niekoľko úprav hlavnej hernej slučky. Vytvorte nový súbor s názvom pohyb-častice.py a pridajte kód s nižšie uvedenými aktualizáciami:
# Vytvorte časticový systém
časticový_systém = ParticleSystem()# Hlavná herná slučka
beh = Pravda
hodiny = pygame.time. hodiny()zatiaľ čo beh:
dt = clock.tick(60) / 1000.0pre udalosť v pygame.event.get():
ak event.type == pygame. UKONČIŤ:
beh = Nepravdivéčastice_y = player_y + player_height // 2
častice_x = player_x + player_widthkeys = pygame.key.get_pressed()
hranica = player_x < window_width - player_widthak kľúče [pygame. K_LEFT] a player_x > 0:
hráč_x -= 5
časticový_systém.add_častica (častica_x, častica_y)ak kľúče [pygame. K_RIGHT] a hranica:
player_x += 5
časticový_systém.pridať_častice (hráč_x, častice_y)časticový_systém.update()
window.fill (ČIERNA)
player_pos = (player_x, player_y, player_width, player_height)
pygame.draw.rect (okno, WHITE, player_pos)
časticový_systém.draw (okno)pygame.display.flip()
# Ukončite hru
pygame.quit()
Keď teraz pohnete objektom hráča, mali by ste vidieť častice zdôrazňujúce pohyb:
Blast Effect
Ďalším časticovým efektom bude výbuch, ktorý nastane, keď hráč vystrelí guľku. Efekt výbuchu bude pozostávať z častíc červenej farby emitovaných z pozície strely.
Definujte a Častice trieda podobná predchádzajúcej, ale tentoraz zahŕňa a farba parameter reprezentujúci farbu častice.
Aktualizujte tiež ParticleSystem trieda na spracovanie nového typu častíc. The add_particle() metóda teraz vyžaduje ďalšie farba parametra a vytvorí častice so zadanou farbou.
# Trieda častíc
triedaČastice:
def__init__(ja, x, y, farba):
self.x = x
self.y = y
self.dx = random.uniform(-2, 2)
self.dy = random.uniform(-2, 2)
seba.životnosť = 30
self.color = farbadefaktualizovať(ja):
self.x += self.dx
self.y += self.dy
seba.životnosť -= 1defkresliť(ja, okno):
pozícia = (int (self.x), int (self.y))
pygame.draw.circle (okno, vlastná.farba, poloha, 3)# Trieda časticového systému
triedaParticleSystem:
def__init__(ja):
vlastné.častice = []defpridať_časticu(ja, x, y, farba):
self.particles.append (častica (x, y, farba)defaktualizovať(ja):
pre častica v vlastné častice:
častica.update()ak častica.životnosť <= 0:
self.particles.remove (častica)
defkresliť(ja, okno):
pre častica v vlastné častice:
častica.kresliť (okno)
Ak chcete integrovať efekt výbuchu do vašej hry, musíte vykonať niekoľko úprav hlavnej hernej slučky. Vytvorte nový názov súboru strieľať-častica.py a pridajte kód s nižšie uvedenými aktualizáciami:
# Vytvorte časticový systém
časticový_systém = ParticleSystem()# Hlavná herná slučka
beh = Pravda
hodiny = pygame.time. hodiny()zatiaľ čo beh:
dt = clock.tick(60) / 1000.0pre udalosť v pygame.event.get():
ak event.type == pygame. UKONČIŤ:
beh = Nepravdivékeys = pygame.key.get_pressed()
hranica = player_x < window_width - player_widthak kľúče [pygame. K_LEFT] a player_x > 0:
hráč_x -= 5ak kľúče [pygame. K_RIGHT] a hranica:
player_x += 5ak kľúče [pygame. K_SPACE]:
bullet_x = player_x + player_width // 2
bullet_y = hráč_y
časticový_systém.pridať_častice (guľka_x, odrážka_y, ČERVENÁ)časticový_systém.update()
window.fill (ČIERNA)
player_pos = (player_x, player_y, player_width, player_height)
pygame.draw.rect (okno, WHITE, player_pos)
časticový_systém.draw (okno)pygame.display.flip()
# Ukončite hru
pygame.quit()
Tu je výstup:
Keď medzerník ( pygame. K_SPACE) sa stlačí, pridajte časticu do časticového systému v mieste strely. To vytvára efekt výbuchu s červenými časticami.
Prachový efekt
Posledným vizuálnym vylepšením, ktoré môžete implementovať, je zaprášený efekt pozadia. Prachový efekt bude pozostávať z malých šedých častíc pohybujúcich sa v kruhovom vzore, čím sa vytvorí dynamické a prašné pozadie.
Aktualizujte Častice triedy zahrnúť uhol a rýchlosť pre každú časticu. Uhol určuje smer pohybu a rýchlosť riadi, ako rýchlo sa častice pohybujú vo svojom kruhovom vzore. Upravte aktualizovať() metóda na aktualizáciu polohy každej častice na základe jej uhla a rýchlosti.
Aktualizujte tiež ParticleSystem triedy na zvládnutie nového správania častíc. Častice sa teraz v hernom okne pohybujú v kruhovom vzore.
# Trieda častíc
triedaČastice:
def__init__(vlastné, x, y, polomer):
self.x = x
self.y = y
self.radius = polomer
vlastný.uhol = random.uniform(0, 2 * math.pi)
self.speed = random.uniform(0.5, 1.5)defaktualizovať(ja):
vlastný.uhol += 0.02
self.x += math.cos (vlastný.uhol) * samo.rýchlosť
self.y += math.sin (self.uhol) * self.speedak self.x < 0:
self.x = šírka_okna
elif self.x > šírka_okna:
seba.x = 0ak self.y < 0:
self.y = výška_okna
elif self.y > window_height:
self.y = 0defkresliť(ja, okno):
farba = (128, 128, 128)
pos = (int (self.x), int (self.y))
polomer = int (self.radius)
pygame.draw.circle (okno, farba, poloha, polomer)# Trieda časticového systému
triedaParticleSystem:
def__init__(ja):
vlastné.častice = []defpridať_časticu(vlastné, x, y, polomer):
self.particles.append (častica (x, y, polomer))defaktualizovať(ja):
pre častica v vlastné častice:
častica.update()
defkresliť(ja, okno):
pre častica v vlastné častice:
častica.kresliť (okno)
Ak chcete do svojej hry integrovať efekt prachu, musíte vykonať niekoľko úprav hlavnej hernej slučky. Vytvorte nový súbor s názvom prach-častica.py a pridajte kód s nižšie uvedenými aktualizáciami:
# Vytvorte časticový systém pre prachový efekt
časticový_systém = ParticleSystem()# Hlavná herná slučka
beh = Pravda
hodiny = pygame.time. hodiny()zatiaľ čo beh:
dt = clock.tick(60) / 1000.0pre udalosť v pygame.event.get():
ak event.type == pygame. UKONČIŤ:
beh = Nepravdivéčastica_x = random.randint(0, šírka_okna)
častica_y = random.randint(0, výška_okna)časticový_systém.add_particle (častica_x, častica_y, 1)
časticový_systém.update()
window.fill((0, 0, 0))
časticový_systém.draw (okno)pygame.display.flip()
# Ukončite hru
pygame.quit()
Pridajte častice náhodne do okna hry pomocou random.randint() funkciu. Každá častica má počiatočný polomer 1. Aktualizujte a nakreslite časticový systém v okne hry, čím vytvoríte dynamický a zaprášený efekt pozadia.
Na obrazovke by ste mali vidieť veľa častíc, ktoré sa pohybujú náhodne, ale hladko:
Osvedčené postupy pre špeciálne efekty
Pri pridávaní špeciálnych efektov do vašej hry Pygame zvážte nasledujúce osvedčené postupy:
Optimalizácia výkonu
Časticové systémy môžu obsahovať veľké množstvo častíc, ktoré môžu ovplyvniť výkon hry. Implementujte techniky, ako je priestorové rozdelenie (napr. Quadtree), aby ste optimalizovali aktualizácie a kreslenie častíc.
Recyklácia častíc
Namiesto vytvárania a ničenia častíc v každom snímku zvážte opätovné použitie častíc resetovaním ich vlastností, keď dosiahnu koniec ich životnosti. To pomáha minimalizovať alokáciu pamäte a dealokáciu.
Zhromažďovanie častíc
Udržujte fond vopred pridelených častíc, aby ste sa vyhli réžii vytvárania nových inštancií počas behu. To môže zlepšiť výkon a znížiť fragmentáciu pamäte.
Limit počtu častíc
Aby ste zabránili časticovým systémom, aby zahltili hernú obrazovku, nastavte limity na maximálny počet častíc a odstráňte častice, keď dosiahnu tento limit. To zaisťuje, že efekty zostanú vizuálne príťažlivé bez toho, aby bránili hraniu.
Vizuálna konzistentnosť
Udržujte konzistentný vizuálny štýl počas celej hry vrátane časticových efektov. Uistite sa, že farby, veľkosti a vzory pohybu častíc sú v súlade s celkovou témou a umeleckým štýlom.
Zvukové efekty
Pridajte zvukové efekty na doplnenie vašich efektov častíc. Prehrajte napríklad zvuky výbuchu, keď dôjde k výbuchu, alebo zvuky okolia, keď sú aktívne efekty hmly alebo prachu.
Urobte hry zábavnejšie so špeciálnymi efektmi
Pridanie špeciálnych efektov, ako sú časticové systémy, do vašich hier Pygame môže výrazne zlepšiť hráčsky zážitok a vaše hry budú pre hráčov pútavejšie a zábavnejšie. Implementáciou efektov častíc, ako sú chodníky, výbuchy, hmla a prach, môžete vytvoriť vizuálne ohromujúce a dynamické prostredia.
Nezabudnite zvážiť optimalizáciu výkonu, recykláciu častíc a vizuálnu konzistenciu pri začleňovaní špeciálnych efektov do svojich hier. Vďaka kreativite a experimentovaniu môžete svoje hry Pygame posunúť na vyššiu úroveň a uchvátiť hráčov pohlcujúcim a vzrušujúcim zážitkom.