Fokozza játékélményét a Python Arcade játékokkal kamera beépítésével.

A Python Arcade könyvtára egy hatékony és felhasználóbarát keretrendszer 2D játékok létrehozásához. Az egyik legfontosabb funkció, amely nagyban javíthatja a játékmenetet és a felhasználói élményt, a kamera hozzáadása. A kamera hozzáadása a játékhoz lehetővé teszi a dinamikus nézetablak manipulációt, lehetővé téve a játékos számára, hogy nagyobb játékvilágokat fedezzen fel, meghatározott területekre fókuszáljon, vagy mozgásban lévő tárgyakat követhessen nyomon.

A kamera nézőpontjának mozgatásával tetszetős effektusokat hozhat létre, javíthatja a játékmenet mechanikáját, és magával ragadóbb játékélményt biztosíthat.

Hozzon létre egy egyszerű játékot

Kezdés előtt, telepítse a pip-t a készülékére és az alábbi paranccsal telepítse a árkád modul:

pip install arcade

Most kezdje el egy alapvető oldalsó görgetős játék létrehozásával, amelyben a játékos irányít egy karaktert, amely a nyílbillentyűkkel balra és jobbra mozoghat.

A cikkben használt kód itt érhető el GitHub adattár és az MIT licence alapján ingyenesen használható.

instagram viewer

Ezenkívül akadályt is hozzáadhat a játékos számára a navigáláshoz.

import árkád

SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
MOVEMENT_SPEED = 5

osztályAz én játékom(árkád. Ablak):
def__benne__(önmagasság, szélesség, magasság):
szuper().__init__(szélesség, magasság)
self.player_x = szélesség // 2
self.player_y = magasság // 2

defbeállít(maga):
arcade.set_background_color (arcade.color. ÉGSZÍNKÉK)

defon_draw(maga):
arcade.start_render()
arcade.draw_circle_filled (self.player_x, self.player_y, 20, arcade.color. PIROS)
arcade.draw_rectangle_filled(400, 200, 80, 40, arcade.color. ZÖLD)

deffrissítés(self, delta_time):
pass

defon_key_press(én, kulcs, módosítók):
ha kulcs == arcade.key. BAL:
self.player_x -= MOZGÁSSEBESSÉG
elif kulcs == arcade.key. JOBB:
self.player_x += MOVEMENT_SPEED

ha __név__ == "__fő__":
játék = MyGame (SCREEN_WIDTH, SCREEN_HEIGHT)
game.setup()
arcade.run()

A kamera beállítása

Ha kamerát szeretne hozzáadni a játékhoz, hozzon létre egy Kamera osztály, amely a kamera helyzetét és mozgását kezeli. Ennek az osztálynak olyan attribútumai lesznek, mint pl kamera_x és camera_y a kamera koordinátáinak tárolására.

osztályKamera:
def__benne__(maga):
self.camera_x = 0
self.camera_y = 0

Kameramozgás billentyűzet bemenetekkel

Ezután módosítsa a játékot on_key_press kamera felvételének módja mozgás a játékos bemenetei alapján. Amikor a lejátszó balra vagy jobbra mozog, ennek megfelelően módosíthatja a kamera pozícióját. Ezenkívül állítsa be a rajzkódot, hogy figyelembe vegye a kamera helyzetét a játékobjektumok renderelésekor.

osztályAz én játékom(árkád. Ablak):
def__benne__(önmagasság, szélesség, magasság):
szuper().__init__(szélesség, magasság)
self.camera = Kamera()
self.player_x = szélesség // 2
self.player_y = magasság // 2

defon_key_press(én, kulcs, módosítók):
ha kulcs == arcade.key. BAL:
self.player_x -= MOZGÁSSEBESSÉG
self.camera.camera_x -= MOZGÁSSEBESSÉG
elif kulcs == arcade.key. JOBB:
self.player_x += MOVEMENT_SPEED
self.camera.camera_x += MOZGÁSSEBESSÉG

defon_draw(maga):
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. PIROS)
arcade.draw_rectangle_filled(400, 200, 80, 40, arcade.color. ZÖLD)

Kamera mozgás egérbemenetekkel

A billentyűzet bemenetek mellett az egér bemenetei alapján is engedélyezheti a kameramozgatást. Például engedélyezheti a lejátszó számára a kamera pásztázását a képernyő húzásával. Ennek eléréséhez módosítsa a on_mouse_drag módszer a kamera pozíciójának frissítésére az egér mozgása alapján.

osztályAz én játékom(árkád. Ablak):
defon_mouse_drag(self, x, y, dx, dy, gombok, módosítók):
ha gombok == arcade. MOUSE_BUTTON_LEFT:
self.camera.camera_x -= dx
self.camera.camera_y -= dy

Kiegészítő funkciókkal együtt

Ha hozzáad egy kamerát a játékhoz, további funkciók és effektusok lehetőségeinek világa nyílik meg. Íme néhány példa arra, hogyan javíthatja tovább játékát a kamerarendszer használatával.

Zoom funkció

A zoom funkció megvalósításához be kell vezetnie a zoomolás változó a Kamera osztályba, és módosítsa a on_mouse_scroll módszer a nagyítási szint frissítésére az egér görgőjének mozgása alapján. Azt is be kell állítani a set_viewport paramétereket a nagyítási szint figyelembevételéhez.

osztályKamera:
def__benne__(maga):
self.camera_x = 0
self.camera_y = 0
self.zoom = 1.0

osztályAz én játékom(árkád. Ablak):

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

defon_draw(maga):
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. PIROS)
arcade.draw_rectangle_filled(400, 200, 80, 40, arcade.color. ZÖLD)

Sima kameramozgás

A simább kameramozgás elérése érdekében bevezethet egy interpolációs technikát, amelyet lineáris interpolációnak (lerp) neveznek. Módosítsa a frissítés módszer a kamera fokozatos mozgatására a célpozíció felé a lerp segítségével. Ez sima átmenet hatást hoz létre.

osztályKamera:
def__benne__(maga):
self.camera_x = 0
self.camera_y = 0
self.target_x = 0
self.target_y = 0
self.lerp_speed = 0.1

deffrissítés(maga):
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)

osztályAz én játékom(árkád. Ablak):

deffrissítés(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(maga):
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. PIROS)
arcade.draw_rectangle_filled(400, 200, 80, 40, arcade.color. ZÖLD)

Kamera korlátozások

Megszorítások bevezetésével megakadályozhatja, hogy a kamera túllépjen bizonyos határokon. Meghatározhatja például a kamera minimális és maximális pozícióját, és biztosíthatja, hogy a kamera ezen határokon belül maradjon.

osztályKamera:
def__benne__(maga):
self.camera_x = 0
self.camera_y = 0
self.min_x = 0
self.max_x = 800
self.min_y = 0
self.max_y = 600

deffrissítés(maga):
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))

osztályAz én játékom(árkád. Ablak):

deffrissítés(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(maga):
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. PIROS)
arcade.draw_rectangle_filled(400, 200, 80, 40, arcade.color. ZÖLD)

Ez csak néhány példa arra, hogyan használhatja fel a kamerarendszert, hogy további funkciókat és effektusokat építsen be Python Arcade játékaiba.

Számos további funkciót is hozzáadhat Python-alapú játékaihoz. Például beállíthatja, hogy a kamera emlékezzen a pozíciójára, amikor a játékos egy másik szintre lép. Ez biztosítja, hogy a nézet változatlan maradjon a szintek közötti váltás során, és egyenletes és egyenletes élményt biztosít a játékos számára.

Bevált gyakorlatok kamerarendszerhez

Amikor kamerarendszert épít be Python Arcade játékában, elengedhetetlen a bevált gyakorlatok követése az optimális funkcionalitás és a zökkenőmentes játékélmény biztosítása érdekében. Íme néhány kulcsfontosságú irányelv, amelyet szem előtt kell tartani:

  • Kerülje a kamera túlzott mozgását: Bár a kamera képes dinamikus elemekkel bővíteni a játékot, kulcsfontosságú az egyensúly megteremtése és a kamera túlzott mozgásának elkerülése. A kamera helyzetének állandó változtatása megzavarhatja a játékosokat, és kihívást jelent számukra a játék világában való eligazodás.
  • Tesztelje a különböző felbontásokat és képarányokat: Elengedhetetlen, hogy a kamerarendszert különböző képernyőfelbontásokon és képarányokon tesztelje, hogy megbizonyosodjon arról, hogy jól működik a különböző eszközökön és konfigurációkban. Ez segít azonosítani a nézetablak skálázásával, az objektumok pozicionálásával vagy a képarány beállításával kapcsolatos problémákat.
  • A renderelés optimalizálása: A kamerarendszer potenciálisan befolyásolhatja a játék teljesítményét, különösen nagy játékvilágok vagy számos tárgy renderelésekor. A renderelés optimalizálása érdekében határozza meg, hogy mely objektumok kívül esnek a kamera látószögén, és zárja ki őket a renderelésből.
  • Kezelje a szélső tokokat: Ügyeljen azokra az esetekre, amikor a kamera meghatározott forgatókönyvekkel találkozhat, például határokkal, ütközésérzékeléssel vagy átfedő tárgyakkal. Győződjön meg arról, hogy a kamerarendszer kecsesen kezeli ezeket az eseteket, és zökkenőmentes átmeneteket vagy megfelelő vizuális jelzéseket biztosít a korlátozások vagy a játékkörnyezet interakcióinak jelzésére.

Ezeket a bevált módszereket követve robusztus és felhasználóbarát kamerarendszert hozhat létre, amely zökkenőmentesen integrálódik Python Arcade játékaiba.

Tedd szórakoztatóbbá a játékokat a fényképezőgép használatával

Ha kamerát ad Python Arcade játékaihoz, nagyban növelheti a játékosok elmerülését és elköteleződését. Legyen szó kiterjedt játékvilág létrehozásáról, kritikus területekre fókuszálásról vagy mozgó objektumok követéséről, a kamerarendszer hatékony eszközt biztosít a játékfejlesztők számára.

A kamera mozgásának, a zoomolásnak és a további effektusoknak a segítségével lenyűgöző élményeket hozhat létre, amelyek elbűvölik a játékosokat, és visszahívják őket még többért.