Unaprijedite svoje iskustvo igranja uz Python Arcade igre uključivanjem kamere.

Pythonova biblioteka Arcade je moćan i user-friendly okvir za stvaranje 2D igara. Jedna ključna značajka koja može uvelike poboljšati igranje i korisničko iskustvo je dodavanje kamere. Dodavanje kamere vašoj igri omogućuje dinamičku manipulaciju okvirom za prikaz, omogućujući igraču da istražuje veće svjetove igre, fokusira se na određena područja ili prati objekte u pokretu.

Pomicanjem kuta gledanja kamere možete stvoriti vizualno privlačne efekte, poboljšati mehaniku igranja i pružiti impresivnije iskustvo igranja.

Stvorite jednostavnu igru

Prije početka, instalirajte pip na svoj uređaj i koristite donju naredbu za instalaciju arkada modul:

pip instaliraj arkadu

Sada započnite stvaranjem osnovne igre bočnog pomicanja u kojoj igrač kontrolira lik koji se može pomicati lijevo i desno pomoću tipki sa strelicama.

Kôd korišten u ovom članku dostupan je u ovom GitHub spremište i besplatan je za korištenje pod MIT licencom.

Osim toga, možete dodati prepreku kojom se igrač može kretati.

uvoz arkada

SCREEN_WIDTH = 800
VISINA_EKRANA = 600
BRZINA_KRETANJA = 5

razredaMoja Igra(arkada. Prozor):
def__u tome__(ja, širina, visina):
super().__init__(širina, visina)
self.player_x = širina // 2
self.player_y = visina // 2

defpostaviti(sebe):
arcade.set_background_color (arcade.color. PLAVO NEBO)

defizvlačenje(sebe):
arcade.start_render()
arcade.draw_circle_filled (self.player_x, self.player_y, 20, arkada.boja. CRVENA)
arcade.draw_rectangle_filled(400, 200, 80, 40, arkada.boja. ZELENO)

defAžuriraj(sam, delta_vrijeme):
proći

defna_pritisak_tipke(ja, ključ, modifikatori):
ako ključ == arkada.ključ. LIJEVO:
self.player_x -= BRZINA_KRETANJA
elif ključ == arkada.ključ. PRAVO:
self.player_x += BRZINA_KRETANJA

ako __ime__ == "__glavni__":
igra = MyGame (SCREEN_WIDTH, SCREEN_HEIGHT)
game.setup()
arkada.run()

Postavljanje kamere

Da biste igri dodali kameru, stvorite Fotoaparat klasa koja upravlja položajem i kretanjem kamere. Ova klasa će imati atribute kao što su kamera_x i kamera_y za pohranjivanje koordinata kamere.

razredaFotoaparat:
def__u tome__(sebe):
self.camera_x = 0
self.camera_y = 0

Kretanje kamere s unosom s tipkovnice

Zatim promijenite igru na_pritisak_tipke način uključivanja kamere kretanje na temelju unosa igrača. Kada se igrač pomakne lijevo ili desno, možete ažurirati položaj kamere u skladu s tim. Također, prilagodite kôd za crtanje tako da uzme u obzir položaj kamere prilikom renderiranja objekata igre.

razredaMoja Igra(arkada. Prozor):
def__u tome__(ja, širina, visina):
super().__init__(širina, visina)
self.camera = Kamera()
self.player_x = širina // 2
self.player_y = visina // 2

defna_pritisak_tipke(ja, ključ, modifikatori):
ako ključ == arkada.ključ. LIJEVO:
self.player_x -= BRZINA_KRETANJA
self.camera.camera_x -= BRZINA_KRETANJA
elif ključ == arkada.ključ. PRAVO:
self.player_x += BRZINA_KRETANJA
self.camera.camera_x += BRZINA_KRETANJA

defizvlačenje(sebe):
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, arkada.boja. CRVENA)
arcade.draw_rectangle_filled(400, 200, 80, 40, arkada.boja. ZELENO)

Kretanje kamere pomoću unosa mišem

Osim unosa s tipkovnice, također možete omogućiti kretanje kamere na temelju unosa mišem. Na primjer, možete dopustiti igraču da pomiče kameru povlačenjem zaslona. Da biste to postigli, izmijenite na_povlačenje_mišem metoda ažuriranja položaja kamere na temelju kretanja miša.

razredaMoja Igra(arkada. Prozor):
defna_povlačenje_mišem(self, x, y, dx, dy, gumbi, modifikatori):
ako gumbi == arkada. MOUSE_BUTTON_LEFT:
self.kamera.kamera_x -= dx
self.camera.camera_y -= dy

Uključujući dodatne značajke

Dodavanje kamere vašoj igri otvara svijet mogućnosti za dodatne značajke i efekte. Evo nekoliko primjera kako možete dodatno poboljšati svoju igru ​​korištenjem sustava kamera.

Funkcionalnost zumiranja

Da biste implementirali funkciju zumiranja, trebate uvesti a zum varijabla u Fotoaparat klase i modificirati pomicanje_na_mišu metoda za ažuriranje razine zumiranja na temelju kretanja kotačića miša. Također morate prilagoditi set_viewport parametre za razmatranje razine zumiranja.

razredaFotoaparat:
def__u tome__(sebe):
self.camera_x = 0
self.camera_y = 0
self.zoom = 1.0

razredaMoja Igra(arkada. Prozor):

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

defizvlačenje(sebe):
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, arkada.boja. CRVENA)
arcade.draw_rectangle_filled(400, 200, 80, 40, arkada.boja. ZELENO)

Glatko kretanje kamere

Kako biste postigli glatko kretanje kamere, možete uvesti tehniku ​​interpolacije koja se naziva linearna interpolacija (lerp). Izmijenite Ažuriraj metoda za postupno pomicanje kamere prema ciljanom položaju pomoću lerp. To stvara učinak glatkog prijelaza.

razredaFotoaparat:
def__u tome__(sebe):
self.camera_x = 0
self.camera_y = 0
self.target_x = 0
self.target_y = 0
self.lerp_brzina = 0.1

defAžuriraj(sebe):
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)

razredaMoja Igra(arkada. Prozor):

defAžuriraj(sam, delta_vrijeme):
self.camera.target_x = self.player_x - SCREEN_WIDTH // 2
self.camera.target_y = self.player_y - SCREEN_HEIGHT // 2
self.camera.update()

defizvlačenje(sebe):
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, arkada.boja. CRVENA)
arcade.draw_rectangle_filled(400, 200, 80, 40, arkada.boja. ZELENO)

Ograničenja kamere

Kako biste spriječili pomicanje kamere izvan određenih granica, možete uvesti ograničenja. Na primjer, možete definirati minimalni i maksimalni položaj kamere i osigurati da kamera ostane unutar tih ograničenja.

razredaFotoaparat:
def__u tome__(sebe):
self.camera_x = 0
self.camera_y = 0
self.min_x = 0
self.max_x = 800
self.min_y = 0
self.max_y = 600

defAžuriraj(sebe):
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))

razredaMoja Igra(arkada. Prozor):

defAžuriraj(sam, delta_vrijeme):
self.camera.camera_x = self.player_x - SCREEN_WIDTH // 2
self.camera.camera_y = self.player_y - SCREEN_HEIGHT // 2
self.camera.update()

defizvlačenje(sebe):
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, arkada.boja. CRVENA)
arcade.draw_rectangle_filled(400, 200, 80, 40, arkada.boja. ZELENO)

Ovo je samo nekoliko primjera kako možete iskoristiti sustav kamere za uključivanje dodatnih značajki i efekata u svoje Python Arcade igre.

Svojim igrama temeljenim na Pythonu također možete dodati mnoge druge dodatne značajke. Na primjer, možete učiniti da kamera zapamti svoj položaj kada se igrač prelazi na drugu razinu. Ovo osigurava da pogled ostaje isti prilikom prijelaza između razina, pružajući glatko i dosljedno iskustvo za igrača.

Najbolji primjeri iz prakse za sustav kamera

Kada implementirate sustav kamera u svoju Python Arcade igru, bitno je slijediti najbolje prakse kako biste osigurali optimalnu funkcionalnost i glatko iskustvo igrača. Evo nekoliko ključnih smjernica koje treba imati na umu:

  • Izbjegavajte pretjerano pomicanje kamere: Iako kamera može vašoj igri dodati dinamične elemente, ključno je pronaći ravnotežu i izbjeći pretjerano pomicanje kamere. Stalno pomicanje položaja kamere može dezorijentirati igrače i otežati im snalaženje u svijetu igre.
  • Testirajte različite razlučivosti i omjere slike: Neophodno je testirati svoj sustav kamere na različitim razlučivostima zaslona i omjerima kako biste bili sigurni da dobro radi na različitim uređajima i konfiguracijama. To će vam pomoći da identificirate sve probleme vezane uz skaliranje okvira za prikaz, pozicioniranje objekta ili prilagodbe omjera slike.
  • Optimizirajte renderiranje: Sustav kamere može potencijalno utjecati na performanse igre, posebno kada se prikazuju veliki svjetovi igre ili brojni objekti. Kako biste optimizirali renderiranje, odredite koji su objekti izvan pogleda kamere i isključite ih iz renderiranja.
  • Rukovati rubnim kućištima: Obratite pozornost na rubne slučajeve u kojima kamera može naići na specifične scenarije, kao što su granice, otkrivanje sudara ili preklapajući objekti. Osigurajte da sustav kamere graciozno rukuje ovim slučajevima i pruža glatke prijelaze ili odgovarajuće vizualne znakove koji ukazuju na ograničenja ili interakcije s okruženjem igre.

Slijedeći ove najbolje prakse, možete stvoriti robustan i user-friendly sustav kamere koji se neprimjetno integrira u vaše Python Arcade igre.

Učinite igre zabavnijim pomoću kamere

Dodavanjem kamere svojim Python Arcade igrama možete uvelike poboljšati uživljavanje i angažman igrača. Bilo da se radi o stvaranju ekspanzivnih svjetova igara, fokusiranju na kritična područja ili praćenju pokretnih objekata, sustav kamera pruža moćan alat za programere igara.

Koristeći kretanje kamere, zumiranje i dodatne efekte, možete stvoriti očaravajuća iskustva koja osvajaju igrače i tjeraju ih da se vraćaju po još.