Zvýšte svoj herný zážitok s arkádovými hrami Python začlenením kamery.

Knižnica Arcade v Pythone je výkonný a užívateľsky prívetivý rámec na vytváranie 2D hier. Jednou z kľúčových funkcií, ktorá môže výrazne zlepšiť hrateľnosť a používateľský zážitok, je pridanie fotoaparátu. Pridanie kamery do hry umožňuje dynamickú manipuláciu s výrezom, čo umožňuje hráčovi preskúmať väčšie herné svety, zamerať sa na konkrétne oblasti alebo sledovať objekty v pohybe.

Posunutím pohľadu kamery môžete vytvárať vizuálne príťažlivé efekty, vylepšovať herné mechanizmy a poskytovať pohlcujúcejší herný zážitok.

Vytvorte jednoduchú hru

Pred spustením nainštalujte pip do svojho zariadenia a pomocou nižšie uvedeného príkazu nainštalujte pasáž modul:

arkáda na inštaláciu pipu

Teraz začnite vytvorením základnej hry s bočným posúvaním, kde hráč ovláda postavu, ktorá sa môže pohybovať doľava a doprava pomocou kláves so šípkami.

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.

instagram viewer

Okrem toho môžete pridať prekážku, aby sa hráč mohol pohybovať.

importovať pasáž

SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
RÝCHLOSŤ POHYBU = 5

triedaMyGame(arkáda. okno):
def__init__(ja, šírka, výška):
super().__init__(šírka, výška)
self.player_x = šírka // 2
self.player_y = výška // 2

defnastaviť(ja):
arcade.set_background_color (arcade.color. MODRÁ OBLOHA)

defon_draw(ja):
arcade.start_render()
arcade.draw_circle_filled (self.player_x, self.player_y, 20, arcade.color. ČERVENÁ)
arcade.draw_rectangle_filled(400, 200, 80, 40, arcade.color. ZELENÁ)

defaktualizovať(self, delta_time):
prejsť

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

ak __meno__ == "__Hlavná__":
hra = MyGame (SCREEN_WIDTH, SCREEN_HEIGHT)
game.setup()
arcade.run()

Nastavenie fotoaparátu

Ak chcete do hry pridať kameru, vytvorte a fotoaparát triedy, ktorá riadi polohu a pohyb kamery. Táto trieda bude mať atribúty ako napr camera_x a camera_y uložiť súradnice kamery.

triedafotoaparát:
def__init__(ja):
self.camera_x = 0
self.camera_y = 0

Pohyb kamery s klávesnicovými vstupmi

Ďalej upravte hru on_key_press spôsob zahrnutia fotoaparátu pohyb na základe vstupov hráča. Keď sa prehrávač pohne doľava alebo doprava, môžete podľa toho aktualizovať polohu kamery. Upravte tiež kód kreslenia tak, aby pri vykresľovaní herných objektov zohľadňoval polohu kamery.

triedaMyGame(arkáda. okno):
def__init__(ja, šírka, výška):
super().__init__(šírka, výška)
self.camera = Fotoaparát()
self.player_x = šírka // 2
self.player_y = výška // 2

defon_key_press(ja, kľúč, modifikátory):
ak kľúč == arcade.key. VĽAVO:
self.player_x -= RÝCHLOSŤ POHYBU
self.camera.camera_x -= RÝCHLOSŤ POHYBU
elif kľúč == arcade.key. SPRÁVNY:
self.player_x += RÝCHLOSŤ POHYBU
self.camera.camera_x += RÝCHLOSŤ POHYBU

defon_draw(ja):
arcade.start_render()
arcade.set_viewport(
self.camera.camera_x,
self.camera.camera_x + SCREEN_WIDTH,
self.camera.camera_y,
self.camera.camera_y + SCREEN_HEIGHT
)
arcade.draw_circle_filled (self.player_x, self.player_y, 20, arcade.color. ČERVENÁ)
arcade.draw_rectangle_filled(400, 200, 80, 40, arcade.color. ZELENÁ)

Pohyb kamery so vstupmi pre myš

Okrem vstupov z klávesnice môžete povoliť aj pohyb kamery na základe vstupov myši. Môžete napríklad povoliť prehrávaču posúvať kameru potiahnutím obrazovky. Aby ste to dosiahli, upravte on_mouse_drag spôsob aktualizácie polohy kamery na základe pohybu myši.

triedaMyGame(arkáda. okno):
defon_mouse_drag(vlastné, x, y, dx, dy, tlačidlá, modifikátory):
ak tlačidlá == arkáda. MOUSE_BUTTON_LEFT:
self.camera.camera_x -= dx
self.camera.camera_y -= dy

Vrátane ďalších funkcií

Pridaním kamery do hry sa vám otvára svet možností pre ďalšie funkcie a efekty. Tu je niekoľko príkladov, ako môžete svoju hru ďalej vylepšiť pomocou kamerového systému.

Funkcia priblíženia

Ak chcete implementovať funkciu priblíženia, musíte zaviesť a priblížiť premenná v fotoaparát triedu a upraviť on_mouse_scroll metóda na aktualizáciu úrovne priblíženia na základe pohybu kolieska myši. Musíte tiež upraviť set_viewport parametre na zohľadnenie úrovne priblíženia.

triedafotoaparát:
def__init__(ja):
self.camera_x = 0
self.camera_y = 0
self.zoom = 1.0

triedaMyGame(arkáda. okno):

defon_mouse_scroll(self, x, y, scroll_x, scroll_y):
self.camera.zoom += scroll_y * 0.1

defon_draw(ja):
arcade.start_render()
arcade.set_viewport(
self.camera.camera_x * self.camera.zoom,
(self.camera.camera_x + SCREEN_WIDTH) * self.camera.zoom,
self.camera.camera_y * self.camera.zoom,
(self.camera.camera_y + SCREEN_HEIGHT) * self.camera.zoom
)
arcade.draw_circle_filled (self.player_x, self.player_y, 20, arcade.color. ČERVENÁ)
arcade.draw_rectangle_filled(400, 200, 80, 40, arcade.color. ZELENÁ)

Plynulý pohyb fotoaparátu

Ak chcete dosiahnuť plynulejší pohyb kamery, môžete zaviesť techniku ​​interpolácie nazývanú lineárna interpolácia (lerp). Upravte aktualizovať spôsob postupného posúvania kamery smerom k cieľovej polohe pomocou lerp. To vytvára efekt hladkého prechodu.

triedafotoaparát:
def__init__(ja):
self.camera_x = 0
self.camera_y = 0
self.target_x = 0
self.target_y = 0
self.lerp_speed = 0.1

defaktualizovať(ja):
self.camera_x = arcade.lerp (self.camera_x, self.target_x, self.lerp_speed)
self.camera_y = arcade.lerp (self.camera_y, self.target_y, self.lerp_speed)

triedaMyGame(arkáda. okno):

defaktualizovať(self, delta_time):
self.camera.target_x = self.player_x - SCREEN_WIDTH // 2
self.camera.target_y = self.player_y - SCREEN_HEIGHT // 2
self.camera.update()

defon_draw(ja):
arcade.start_render()
arcade.set_viewport(
self.camera.camera_x,
self.camera.camera_x + SCREEN_WIDTH,
self.camera.camera_y,
self.camera.camera_y + SCREEN_HEIGHT
)
arcade.draw_circle_filled (self.player_x, self.player_y, 20, arcade.color. ČERVENÁ)
arcade.draw_rectangle_filled(400, 200, 80, 40, arcade.color. ZELENÁ)

Obmedzenia fotoaparátu

Ak chcete zabrániť pohybu kamery za určité hranice, môžete zaviesť obmedzenia. Môžete napríklad definovať minimálnu a maximálnu polohu kamery a zabezpečiť, aby kamera zostala v rámci týchto limitov.

triedafotoaparát:
def__init__(ja):
self.camera_x = 0
self.camera_y = 0
self.min_x = 0
self.max_x = 800
self.min_y = 0
self.max_y = 600

defaktualizovať(ja):
self.camera_x = max (self.min_x, min (self.camera_x, self.max_x))
self.camera_y = max (self.min_y, min (self.camera_y, self.max_y))

triedaMyGame(arkáda. okno):

defaktualizovať(self, delta_time):
self.camera.camera_x = self.player_x - SCREEN_WIDTH // 2
self.camera.camera_y = self.player_y - SCREEN_HEIGHT // 2
self.camera.update()

defon_draw(ja):
arcade.start_render()
arcade.set_viewport(
self.camera.camera_x,
self.camera.camera_x + SCREEN_WIDTH,
self.camera.camera_y,
self.camera.camera_y + SCREEN_HEIGHT
)
arcade.draw_circle_filled (self.player_x, self.player_y, 20, arcade.color. ČERVENÁ)
arcade.draw_rectangle_filled(400, 200, 80, 40, arcade.color. ZELENÁ)

Toto je len niekoľko príkladov toho, ako môžete využiť kamerový systém na zahrnutie ďalších funkcií a efektov do vašich hier Python Arcade.

Do svojich hier založených na Pythone môžete pridať aj mnoho ďalších doplnkových funkcií. Môžete napríklad nastaviť, aby si kamera zapamätala svoju polohu, keď hráč sa presunie na inú úroveň. To zaisťuje, že pohľad zostane rovnaký pri prechode medzi úrovňami, čo poskytuje hráčovi plynulý a konzistentný zážitok.

Osvedčené postupy pre kamerový systém

Pri implementácii kamerového systému do vašej hry Python Arcade je nevyhnutné dodržiavať osvedčené postupy, aby ste zaistili optimálnu funkčnosť a bezproblémový zážitok z hry. Tu je niekoľko kľúčových pokynov, ktoré treba mať na pamäti:

  • Vyhnite sa nadmernému pohybu fotoaparátu: Aj keď kamera môže do vašej hry pridať dynamické prvky, je dôležité zachovať rovnováhu a vyhnúť sa nadmernému pohybu kamery. Neustále posúvanie polohy kamery môže hráčov dezorientovať a sťažiť im orientáciu v hernom svete.
  • Testujte v rôznych rozlíšeniach a pomeroch strán: Je nevyhnutné otestovať váš kamerový systém na rôznych rozlíšeniach obrazovky a pomeroch strán, aby ste sa uistili, že bude dobre fungovať na rôznych zariadeniach a konfiguráciách. Pomôže vám to identifikovať akékoľvek problémy súvisiace s mierkou výrezu, umiestnením objektu alebo úpravou pomeru strán.
  • Optimalizujte vykresľovanie: Kamerový systém môže potenciálne ovplyvniť výkon hry, najmä pri vykresľovaní veľkých herných svetov alebo mnohých objektov. Ak chcete optimalizovať vykresľovanie, určite, ktoré objekty sú mimo pohľadu kamery, a vylúčte ich z vykresľovania.
  • Rukoväť okrajových puzdier: Venujte pozornosť okrajovým prípadom, v ktorých môže kamera naraziť na špecifické scenáre, ako sú hranice, detekcia kolízie alebo prekrývajúce sa objekty. Uistite sa, že kamerový systém zvláda tieto prípady elegantne a poskytuje plynulé prechody alebo vhodné vizuálne podnety na označenie obmedzení alebo interakcií s herným prostredím.

Dodržiavaním týchto osvedčených postupov môžete vytvoriť robustný a užívateľsky prívetivý kamerový systém, ktorý sa bez problémov integruje do vašich arkádových hier Python.

Urobte hry zábavnejšie pomocou fotoaparátu

Pridaním kamery do vašich arkádových hier Python môžete výrazne zlepšiť ponorenie a zapojenie hráča. Či už ide o vytváranie rozsiahlych herných svetov, zameranie sa na kritické oblasti alebo sledovanie pohybujúcich sa objektov, kamerový systém poskytuje vývojárom hier výkonný nástroj.

Využitím pohybu kamery, približovania a ďalších efektov môžete vytvoriť fascinujúce zážitky, ktoré hráčov uchvátia a prinútia ich, aby sa k nim vracali.