Izboljšajte svojo igralno izkušnjo z igrami Python Arcade z vključitvijo kamere.

Pythonova knjižnica Arcade je zmogljivo in uporabniku prijazno ogrodje za ustvarjanje 2D iger. Ena od ključnih funkcij, ki lahko močno izboljša igranje in uporabniško izkušnjo, je dodana kamera. Dodajanje kamere v vašo igro omogoča dinamično manipulacijo vidnega polja, kar igralcu omogoča raziskovanje večjih svetov igre, osredotočanje na določena področja ali sledenje predmetom v gibanju.

S premikanjem zornega kota kamere lahko ustvarite vizualno privlačne učinke, izboljšate mehaniko igranja in zagotovite bolj poglobljeno igralno izkušnjo.

Ustvari preprosto igro

Pred začetkom, namestite pip na svojo napravo in uporabite spodnji ukaz za namestitev arkada modul:

pip install arkada

Zdaj začnite z ustvarjanjem osnovne igre s stranskim drsenjem, kjer igralec nadzoruje lik, ki se lahko premika levo in desno s puščičnimi tipkami.

Koda, uporabljena v tem članku, je na voljo tukaj Repozitorij GitHub in je brezplačen za uporabo pod licenco MIT.

Poleg tega lahko dodate oviro, po kateri se igralec premika.

uvoz arkada

SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
HITROST_GIBANJA = 5

razredMyGame(arkadne. okno):
def__v__(jaz, širina, višina):
super().__init__(širina, višina)
self.player_x = širina // 2
self.player_y = višina // 2

defnastaviti(sebe):
arcade.set_background_color (arcade.color. MODRO NEBO)

defon_draw(sebe):
arcade.start_render()
arcade.draw_circle_filled (self.player_x, self.player_y, 20, arcade.color. RDEČA)
arcade.draw_rectangle_filled(400, 200, 80, 40, arcade.color. ZELENA)

defnadgradnja(sam, delta_time):
prehod

defna_pritisk_tipke(jaz, ključ, modifikatorji):
če ključ == arcade.key. LEVO:
self.player_x -= MOVEMENT_SPEED
elif ključ == arcade.key. PRAV:
self.player_x += MOVEMENT_SPEED

če __ime__ == "__glavni__":
igra = MyGame (SCREEN_WIDTH, SCREEN_HEIGHT)
game.setup()
arcade.run()

Nastavitev kamere

Če želite v igro dodati kamero, ustvarite a Kamera razred, ki upravlja položaj in gibanje kamere. Ta razred bo imel atribute, kot so kamera_x in kamera_y za shranjevanje koordinat kamere.

razredKamera:
def__v__(sebe):
self.camera_x = 0
self.camera_y = 0

Premikanje kamere z vnosi s tipkovnice

Nato spremenite igro na_pritisk_tipke način vključitve kamere gibanje na podlagi igralčevih vnosov. Ko se igralec premakne levo ali desno, lahko ustrezno posodobite položaj kamere. Prav tako prilagodite kodo za risanje, da bo upoštevala položaj kamere pri upodabljanju predmetov igre.

razredMyGame(arkadne. okno):
def__v__(jaz, širina, višina):
super().__init__(širina, višina)
self.camera = Kamera()
self.player_x = širina // 2
self.player_y = višina // 2

defna_pritisk_tipke(jaz, ključ, modifikatorji):
če ključ == arcade.key. LEVO:
self.player_x -= MOVEMENT_SPEED
self.camera.camera_x -= HITROST_GIBANJA
elif ključ == arcade.key. PRAV:
self.player_x += MOVEMENT_SPEED
self.camera.camera_x += MOVEMENT_SPEED

defon_draw(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, arcade.color. RDEČA)
arcade.draw_rectangle_filled(400, 200, 80, 40, arcade.color. ZELENA)

Premikanje kamere z miško

Poleg vnosov s tipkovnice lahko omogočite tudi premikanje kamere na podlagi vnosov z miško. Na primer, lahko dovolite igralcu, da premika kamero tako, da povleče zaslon. Če želite to doseči, spremenite on_mouse_drag metoda za posodobitev položaja kamere glede na gibanje miške.

razredMyGame(arkadne. okno):
defon_mouse_drag(self, x, y, dx, dy, gumbi, modifikatorji):
če gumbi == arkada. MOUSE_BUTTON_LEFT:
self.camera.camera_x -= dx
self.camera.camera_y -= dy

Vključno z dodatnimi funkcijami

Če svoji igri dodate kamero, odprete svet možnosti za dodatne funkcije in učinke. Tukaj je nekaj primerov, kako lahko še izboljšate svojo igro s sistemom kamer.

Funkcionalnost povečave

Če želite implementirati funkcijo povečave, morate uvesti a povečava spremenljivka v Kamera razred in spremenite on_mouse_scroll metoda za posodobitev stopnje povečave na podlagi premikanja kolesca miške. Prav tako morate prilagoditi set_viewport parametre za upoštevanje stopnje povečave.

razredKamera:
def__v__(sebe):
self.camera_x = 0
self.camera_y = 0
self.zoom = 1.0

razredMyGame(arkadne. okno):

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

defon_draw(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, arcade.color. RDEČA)
arcade.draw_rectangle_filled(400, 200, 80, 40, arcade.color. ZELENA)

Gladko premikanje kamere

Če želite doseči bolj gladko gibanje kamere, lahko uvedete tehniko interpolacije, imenovano linearna interpolacija (lerp). Spremenite nadgradnja metoda za postopno premikanje kamere proti ciljnemu položaju z uporabo lerp. To ustvari učinek gladkega prehoda.

razredKamera:
def__v__(sebe):
self.camera_x = 0
self.camera_y = 0
self.target_x = 0
self.target_y = 0
self.lerp_speed = 0.1

defnadgradnja(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)

razredMyGame(arkadne. okno):

defnadgradnja(sam, delta_time):
self.camera.target_x = self.player_x - SCREEN_WIDTH // 2
self.camera.target_y = self.player_y - VIŠINA_ZASLON // 2
self.camera.update()

defon_draw(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, arcade.color. RDEČA)
arcade.draw_rectangle_filled(400, 200, 80, 40, arcade.color. ZELENA)

Omejitve kamere

Če želite preprečiti, da bi se kamera premaknila čez določene meje, lahko uvedete omejitve. Določite lahko na primer najmanjši in največji položaj kamere ter zagotovite, da kamera ostane znotraj teh meja.

razredKamera:
def__v__(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

defnadgradnja(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))

razredMyGame(arkadne. okno):

defnadgradnja(sam, 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(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, arcade.color. RDEČA)
arcade.draw_rectangle_filled(400, 200, 80, 40, arcade.color. ZELENA)

To je le nekaj primerov, kako lahko izkoristite sistem kamer za vključitev dodatnih funkcij in učinkov v vaše igre Python Arcade.

Svojim igram, ki temeljijo na Pythonu, lahko dodate tudi številne druge dodatne funkcije. Na primer, lahko omogočite, da si kamera zapomni svoj položaj, ko je igralec premakne na drugo raven. To zagotavlja, da pogled ostane enak pri prehodu med nivoji, kar zagotavlja gladko in dosledno izkušnjo za igralca.

Najboljše prakse za sistem kamer

Ko implementirate sistem kamer v svojo igro Python Arcade, je bistveno, da sledite najboljšim praksam, da zagotovite optimalno funkcionalnost in nemoteno igralsko izkušnjo. Tukaj je nekaj ključnih smernic, ki jih morate upoštevati:

  • Izogibajte se pretiranemu premikanju kamere: Čeprav lahko kamera vaši igri doda dinamične elemente, je ključnega pomena, da najdete ravnovesje in se izognete pretiranemu premikanju kamere. Nenehno premikanje položaja kamere lahko zmede igralce in jim oteži krmarjenje po svetu igre.
  • Preizkusite različne ločljivosti in razmerja stranic: Bistveno je, da preizkusite svoj sistem kamere na različnih ločljivostih zaslona in razmerjih stranic, da zagotovite, da dobro deluje v različnih napravah in konfiguracijah. To vam bo pomagalo prepoznati morebitne težave, povezane s spreminjanjem velikosti vidnega polja, pozicioniranjem predmeta ali prilagoditvami razmerja stranic.
  • Optimizirajte upodabljanje: Sistem kamer lahko potencialno vpliva na zmogljivost igre, zlasti pri upodabljanju velikih svetov igre ali številnih predmetov. Če želite optimizirati upodabljanje, določite, kateri predmeti so zunaj pogleda kamere, in jih izključite iz upodabljanja.
  • Ravnajte z robnimi kovčki: bodite pozorni na robne primere, kjer lahko kamera naleti na posebne scenarije, kot so meje, zaznavanje trkov ali prekrivajoči se predmeti. Zagotovite, da sistem kamere elegantno obravnava te primere in zagotavlja gladke prehode ali ustrezne vizualne namige, ki označujejo omejitve ali interakcije z okoljem igre.

Z upoštevanjem teh najboljših praks lahko ustvarite robusten in uporabniku prijazen sistem kamer, ki se neopazno integrira v vaše igre Python Arcade.

Naredite igre bolj zabavne s kamero

Z dodajanjem kamere svojim igram Python Arcade lahko močno izboljšate potopitev in angažiranost igralcev. Ne glede na to, ali gre za ustvarjanje obsežnih svetov iger, osredotočanje na kritična področja ali sledenje premikajočim se predmetom, je sistem kamer zmogljivo orodje za razvijalce iger.

Z uporabo premikanja kamere, povečave in dodatnih učinkov lahko ustvarite očarljive izkušnje, ki očarajo igralce in jih prisilijo, da se vračajo po nove.