Zvyšte svůj herní zážitek s arkádovými hrami Python začleněním kamery.

Knihovna Arcade v Pythonu je výkonný a uživatelsky přívětivý rámec pro vytváření 2D her. Jednou z klíčových funkcí, která může výrazně zlepšit hratelnost a uživatelský zážitek, je přidání kamery. Přidání kamery do vaší hry umožňuje dynamickou manipulaci s výřezy, což umožňuje hráči prozkoumat větší herní světy, zaměřit se na konkrétní oblasti nebo sledovat objekty v pohybu.

Posouváním pohledu kamery můžete vytvářet vizuálně přitažlivé efekty, vylepšovat herní mechanismy a poskytovat pohlcující herní zážitek.

Vytvořte jednoduchou hru

Před začátkem, nainstalujte pip do svého zařízení a pomocí níže uvedeného příkazu nainstalujte pasáž modul:

pip instalační arkáda

Nyní začněte vytvořením základní hry s bočním posouváním, kde hráč ovládá postavu, která se může pohybovat doleva a doprava pomocí kláves se šipkami.

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.

Navíc můžete přidat překážku, aby se hráč mohl pohybovat.

instagram viewer
import pasáž

SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
MOVEMENT_SPEED = 5

třídaMyGame(pasáž. Okno):
def__init__(vlastní, šířka, výška):
super().__init__(šířka, výška)
self.player_x = šířka // 2
self.player_y = výška // 2

defzaložit(já):
arcade.set_background_color (arcade.color. MODRÁ OBLOHA)

defon_draw(já):
arcade.start_render()
arcade.draw_circle_filled (self.player_x, self.player_y, 20, arkáda.barva. ČERVENÉ)
arcade.draw_rectangle_filled(400, 200, 80, 40, arkáda.barva. ZELENÁ)

defAktualizace(self, delta_time):
složit

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

-li __jméno__ == "__hlavní__":
hra = MyGame (SCREEN_WIDTH, SCREEN_HEIGHT)
game.setup()
arcade.run()

Nastavení fotoaparátu

Chcete-li do hry přidat kameru, vytvořte a Fotoaparát třídy, která řídí polohu a pohyb kamery. Tato třída bude mít atributy jako např kamera_x a kamera_y pro uložení souřadnic kamery.

třídaFotoaparát:
def__init__(já):
self.camera_x = 0
self.camera_y = 0

Pohyb Kamera Se Vstupy Klávesnice

Dále upravte hru on_key_press způsob zahrnutí fotoaparátu pohyb na základě vstupů hráče. Když se přehrávač pohybuje doleva nebo doprava, můžete odpovídajícím způsobem aktualizovat polohu kamery. Upravte také kreslicí kód tak, aby při vykreslování herních objektů zohledňoval polohu kamery.

třídaMyGame(pasáž. Okno):
def__init__(vlastní, šířka, výška):
super().__init__(šířka, výška)
self.camera = Camera()
self.player_x = šířka // 2
self.player_y = výška // 2

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

defon_draw(já):
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, arkáda.barva. ČERVENÉ)
arcade.draw_rectangle_filled(400, 200, 80, 40, arkáda.barva. ZELENÁ)

Pohyb kamery se vstupy pro myš

Kromě vstupů z klávesnice můžete také povolit pohyb kamery na základě vstupů myši. Přehrávači můžete například povolit panorámování kamery přetažením obrazovky. Chcete-li toho dosáhnout, upravte přetažením_myší způsob aktualizace polohy kamery na základě pohybu myši.

třídaMyGame(pasáž. Okno):
defpřetažením_myší(self, x, y, dx, dy, tlačítka, modifikátory):
-li tlačítka == arkáda. MOUSE_BUTTON_LEFT:
self.camera.camera_x -= dx
self.camera.camera_y -= dy

Včetně dalších funkcí

Přidáním kamery do hry se vám otevře svět možností pro další funkce a efekty. Zde je několik příkladů, jak můžete svou hru dále vylepšit pomocí kamerového systému.

Funkce zoom

Chcete-li implementovat funkci zoomu, musíte zavést a Zvětšení proměnná v Fotoaparát třídy a upravit on_mouse_scroll metoda pro aktualizaci úrovně přiblížení na základě pohybu kolečka myši. Musíte také upravit set_viewport parametry, které zohledňují úroveň přiblížení.

třídaFotoaparát:
def__init__(já):
self.camera_x = 0
self.camera_y = 0
self.zoom = 1.0

třídaMyGame(pasáž. Okno):

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

defon_draw(já):
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, arkáda.barva. ČERVENÉ)
arcade.draw_rectangle_filled(400, 200, 80, 40, arkáda.barva. ZELENÁ)

Plynulý pohyb fotoaparátu

Chcete-li dosáhnout plynulejšího pohybu kamery, můžete zavést techniku ​​interpolace zvanou lineární interpolace (lerp). Upravte Aktualizace metoda postupného pohybu kamery směrem k cílové pozici pomocí lerp. To vytváří efekt hladkého přechodu.

třídaFotoaparát:
def__init__(já):
self.camera_x = 0
self.camera_y = 0
self.target_x = 0
self.target_y = 0
self.lerp_speed = 0.1

defAktualizace(já):
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)

třídaMyGame(pasáž. Okno):

defAktualizace(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(já):
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, arkáda.barva. ČERVENÉ)
arcade.draw_rectangle_filled(400, 200, 80, 40, arkáda.barva. ZELENÁ)

Omezení fotoaparátu

Abyste zabránili pohybu kamery za určité hranice, můžete zavést omezení. Můžete například definovat minimální a maximální polohu kamery a zajistit, aby kamera zůstala v těchto mezích.

třídaFotoaparát:
def__init__(já):
self.camera_x = 0
self.camera_y = 0
self.min_x = 0
self.max_x = 800
self.min_y = 0
self.max_y = 600

defAktualizace(já):
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))

třídaMyGame(pasáž. Okno):

defAktualizace(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(já):
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, arkáda.barva. ČERVENÉ)
arcade.draw_rectangle_filled(400, 200, 80, 40, arkáda.barva. ZELENÁ)

Toto je jen několik příkladů toho, jak můžete využít kamerový systém k zahrnutí dalších funkcí a efektů do vašich her Python Arcade.

Do svých her založených na Pythonu můžete také přidat mnoho dalších doplňkových funkcí. Můžete například nastavit, aby si kamera pamatovala svou polohu, když je hráč se přesune na jinou úroveň. Tím je zajištěno, že pohled zůstane stejný při přechodu mezi úrovněmi, což poskytuje hráči hladký a konzistentní zážitek.

Nejlepší postupy pro kamerový systém

Při implementaci kamerového systému do vaší hry Python Arcade je nezbytné dodržovat osvědčené postupy, abyste zajistili optimální funkčnost a bezproblémový zážitek z hraní. Zde je několik klíčových pokynů, které je třeba mít na paměti:

  • Vyhněte se nadměrnému pohybu fotoaparátu: I když může kamera přidat do vaší hry dynamické prvky, je důležité najít rovnováhu a vyhnout se nadměrnému pohybu kamery. Neustálé posouvání polohy kamery může hráče dezorientovat a ztěžovat jim orientaci v herním světě.
  • Testujte v různých rozlišeních a poměrech stran: Je nezbytné otestovat váš kamerový systém na různých rozlišeních obrazovky a poměrech stran, abyste zajistili, že bude dobře fungovat na různých zařízeních a konfiguracích. To vám pomůže identifikovat jakékoli problémy související se změnou měřítka výřezu, umístěním objektu nebo úpravou poměru stran.
  • Optimalizujte vykreslování: Kamerový systém může potenciálně ovlivnit výkon hry, zejména při vykreslování velkých herních světů nebo mnoha objektů. Chcete-li optimalizovat vykreslování, určete, které objekty jsou mimo záběr kamery, a vyřaďte je z vykreslování.
  • Pouzdra na okraje rukojeti: Věnujte pozornost okrajovým případům, kdy se kamera může setkat se specifickými scénáři, jako jsou hranice, detekce kolize nebo překrývající se objekty. Ujistěte se, že kamerový systém zvládá tyto případy elegantně a poskytuje plynulé přechody nebo vhodné vizuální podněty k označení omezení nebo interakcí s herním prostředím.

Dodržováním těchto osvědčených postupů můžete vytvořit robustní a uživatelsky přívětivý kamerový systém, který se bez problémů integruje do vašich her Python Arcade.

Udělejte si hry zábavnější pomocí fotoaparátu

Přidáním kamery do her Python Arcade můžete výrazně zlepšit ponoření a zapojení hráče. Ať už jde o vytváření rozsáhlých herních světů, zaměření na kritické oblasti nebo sledování pohybujících se objektů, kamerový systém poskytuje vývojářům her mocný nástroj.

Využitím pohybu kamery, zoomu a dalších efektů můžete vytvořit fascinující zážitky, které hráče uchvátí a přinutí je vracet se pro další.