Uzlabojiet savu spēļu pieredzi ar Python Arcade spēlēm, iekļaujot kameru.

Python Arcade bibliotēka ir jaudīgs un lietotājam draudzīgs ietvars 2D spēļu izveidei. Viena no galvenajām funkcijām, kas var ievērojami uzlabot spēli un lietotāja pieredzi, ir kameras pievienošana. Kameras pievienošana spēlei ļauj dinamiski manipulēt ar skatu logu, ļaujot spēlētājam izpētīt lielākas spēļu pasaules, koncentrēties uz noteiktiem apgabaliem vai izsekot kustīgiem objektiem.

Pārvietojot kameras skatu punktu, varat izveidot vizuāli pievilcīgus efektus, uzlabot spēles mehāniku un nodrošināt aizraujošāku spēļu pieredzi.

Izveidojiet vienkāršu spēli

Pirms sākt, instalējiet pip savā ierīcē un izmantojiet tālāk norādīto komandu, lai instalētu arkāde modulis:

pip instalēšanas arkāde

Tagad sāciet, izveidojot vienkāršu sānu ritināšanas spēli, kurā spēlētājs kontrolē varoni, kas var pārvietoties pa kreisi un pa labi, izmantojot bulttaustiņus.

Šajā rakstā izmantotais kods ir pieejams šajā GitHub repozitorijs un to varat izmantot bez maksas saskaņā ar MIT licenci.

instagram viewer

Turklāt jūs varat pievienot šķērsli, lai spēlētājs varētu pārvietoties.

imports arkāde

SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
MOVEMENT_SPEED = 5

klasēMana spēle(pasāža. logs):
def__tajā__(pats, platums, augstums):
super().__init__(platums, augstums)
self.player_x = platums // 2
self.player_y = augstums // 2

defuzstādīt(pats):
arcade.set_background_color (arcade.color. DEBESU ZILS)

defon_draw(pats):
arcade.start_render()
arcade.draw_circle_filled (self.player_x, self.player_y, 20, arcade.color. SARKANS)
arcade.draw_rectangle_filled(400, 200, 80, 40, arcade.color. ZAĻS)

defAtjaunināt(self, delta_time):
caurlaide

defon_key_press(pašs, atslēga, modifikatori):
ja taustiņš == arcade.key. PA kreisi:
self.player_x -= KUSTĪBAS_ĀTRUMS
elifs taustiņš == arcade.key. PA LABI:
self.player_x += KUSTĪBAS_ĀTRUMS

ja __nosaukums__ == "__galvenais__":
spēle = MyGame (SCREEN_WIDTH, SCREEN_HEIGHT)
game.setup()
arcade.run()

Kameras iestatīšana

Lai spēlei pievienotu kameru, izveidojiet a Kamera klase, kas pārvalda kameras pozīciju un kustību. Šai klasei būs tādi atribūti kā kamera_x un kamera_y lai saglabātu kameras koordinātas.

klasēKamera:
def__tajā__(pats):
self.camera_x = 0
self.camera_y = 0

Kameras kustība ar tastatūras ieejām

Pēc tam mainiet spēli on_key_press kameras iekļaušanas metode kustība, pamatojoties uz spēlētāja ievadi. Kad atskaņotājs pārvietojas pa kreisi vai pa labi, varat attiecīgi atjaunināt kameras pozīciju. Pielāgojiet arī zīmēšanas kodu, lai, renderējot spēles objektus, tiktu ņemta vērā kameras pozīcija.

klasēMana spēle(pasāža. logs):
def__tajā__(pats, platums, augstums):
super().__init__(platums, augstums)
self.camera = Kamera()
self.player_x = platums // 2
self.player_y = augstums // 2

defon_key_press(pašs, atslēga, modifikatori):
ja taustiņš == arcade.key. PA kreisi:
self.player_x -= KUSTĪBAS_ĀTRUMS
self.camera.camera_x -= KUSTĪBAS_ĀTRUMS
elifs taustiņš == arcade.key. PA LABI:
self.player_x += KUSTĪBAS_ĀTRUMS
self.camera.camera_x += KUSTĪBAS_ĀTRUMS

defon_draw(pats):
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. SARKANS)
arcade.draw_rectangle_filled(400, 200, 80, 40, arcade.color. ZAĻS)

Kameras kustība ar peles ieejām

Papildus tastatūras ievadēm varat arī iespējot kameras kustību, pamatojoties uz peles ievadi. Piemēram, varat ļaut atskaņotājam panoramēt kameru, velkot ekrānu. Lai to panāktu, mainiet on_mouse_drag metode, kā atjaunināt kameras pozīciju, pamatojoties uz peles kustību.

klasēMana spēle(pasāža. logs):
defon_mouse_drag(self, x, y, dx, dy, pogas, modifikatori):
ja pogas == arkāde. MOUSE_BUTTON_LEFT:
self.camera.camera_x -= dx
self.camera.camera_y -= dy

Ieskaitot papildu funkcijas

Kameras pievienošana spēlei paver papildu funkciju un efektu iespēju pasauli. Šeit ir daži piemēri, kā jūs varat vēl vairāk uzlabot savu spēli, izmantojot kameru sistēmu.

Tālummaiņas funkcionalitāte

Lai ieviestu tālummaiņas funkcionalitāti, jums jāievieš a tālummaiņa mainīgais Kamera klasē un modificēt on_mouse_scroll metode, lai atjauninātu tālummaiņas līmeni, pamatojoties uz peles ritenīša kustību. Jums arī jāpielāgo set_viewport parametrus, lai ņemtu vērā tālummaiņas līmeni.

klasēKamera:
def__tajā__(pats):
self.camera_x = 0
self.camera_y = 0
self.zoom = 1.0

klasēMana spēle(pasāža. logs):

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

defon_draw(pats):
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. SARKANS)
arcade.draw_rectangle_filled(400, 200, 80, 40, arcade.color. ZAĻS)

Vienmērīga kameras kustība

Lai panāktu vienmērīgāku kameras kustību, varat ieviest interpolācijas paņēmienu, ko sauc par lineāro interpolāciju (lerp). Modificēt Atjaunināt metode, lai pakāpeniski virzītu kameru uz mērķa pozīciju, izmantojot lerp. Tas rada vienmērīgu pārejas efektu.

klasēKamera:
def__tajā__(pats):
self.camera_x = 0
self.camera_y = 0
self.target_x = 0
self.target_y = 0
self.lerp_speed = 0.1

defAtjaunināt(pats):
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)

klasēMana spēle(pasāža. logs):

defAtjaunināt(self, delta_time):
self.camera.target_x = self.player_x — SCREEN_WIDTH // 2
self.camera.target_y = self.player_y — EKRĀNA_AUGSTUMS // 2
self.camera.update()

defon_draw(pats):
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. SARKANS)
arcade.draw_rectangle_filled(400, 200, 80, 40, arcade.color. ZAĻS)

Kameras ierobežojumi

Lai novērstu kameras pārvietošanos ārpus noteiktām robežām, varat ieviest ierobežojumus. Piemēram, varat definēt minimālo un maksimālo kameras pozīciju un nodrošināt, ka kamera paliek šajās robežās.

klasēKamera:
def__tajā__(pats):
self.camera_x = 0
self.camera_y = 0
self.min_x = 0
self.max_x = 800
self.min_y = 0
self.max_y = 600

defAtjaunināt(pats):
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))

klasēMana spēle(pasāža. logs):

defAtjaunināt(self, delta_time):
self.camera.camera_x = self.player_x — SCREEN_WIDTH // 2
self.camera.camera_y = self.player_y — EKRĀNA_AUGSTUMS // 2
self.camera.update()

defon_draw(pats):
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. SARKANS)
arcade.draw_rectangle_filled(400, 200, 80, 40, arcade.color. ZAĻS)

Šie ir tikai daži piemēri tam, kā varat izmantot kameru sistēmu, lai savās Python Arcade spēlēs iekļautu papildu funkcijas un efektus.

Varat arī pievienot daudzas citas papildu funkcijas savām Python spēlēm. Piemēram, varat likt kamerai atcerēties savu pozīciju, kad spēlētājs pāriet uz citu līmeni. Tas nodrošina, ka skats paliek nemainīgs, pārejot starp līmeņiem, nodrošinot spēlētājam vienmērīgu un konsekventu pieredzi.

Paraugprakse kameru sistēmai

Ieviešot kameru sistēmu savā Python Arcade spēlē, ir svarīgi ievērot labāko praksi, lai nodrošinātu optimālu funkcionalitāti un vienmērīgu spēlētāja pieredzi. Šeit ir dažas galvenās vadlīnijas, kas jāpatur prātā:

  • Izvairieties no pārmērīgas kameras kustības: lai gan kamera var pievienot jūsu spēlei dinamiskus elementus, ir ļoti svarīgi panākt līdzsvaru un izvairīties no pārmērīgas kameras kustības. Pastāvīga kameras pozīcijas maiņa var dezorientēt spēlētājus un apgrūtināt orientēšanos spēles pasaulē.
  • Pārbaudiet dažādas izšķirtspējas un malu attiecības: ir svarīgi pārbaudīt kameras sistēmu dažādās ekrāna izšķirtspējās un malu attiecībās, lai nodrošinātu, ka tā labi darbojas dažādās ierīcēs un konfigurācijās. Tas palīdzēs jums noteikt visas problēmas, kas saistītas ar skata loga mērogošanu, objektu pozicionēšanu vai malu attiecības pielāgojumiem.
  • Optimizējiet renderēšanu: kameras sistēma var ietekmēt spēles veiktspēju, īpaši, ja tiek renderētas lielas spēļu pasaules vai daudzi objekti. Lai optimizētu renderēšanu, nosakiet, kuri objekti atrodas ārpus kameras skata, un izslēdziet tos no renderēšanas.
  • Rokturis malu gadījumos: pievērsiet uzmanību malu gadījumiem, kad kamera var saskarties ar īpašiem scenārijiem, piemēram, robežām, sadursmes noteikšanu vai pārklājošiem objektiem. Pārliecinieties, ka kameru sistēma šos gadījumus apstrādā graciozi un nodrošina vienmērīgas pārejas vai atbilstošus vizuālus norādījumus, lai norādītu uz ierobežojumiem vai mijiedarbību ar spēles vidi.

Ievērojot šo labāko praksi, varat izveidot stabilu un lietotājam draudzīgu kameru sistēmu, kas nemanāmi integrējas jūsu Python Arcade spēlēs.

Padariet spēles jautrākas, izmantojot kameru

Pievienojot kameru savām Python Arcade spēlēm, jūs varat ievērojami uzlabot spēlētāju iedziļināšanos un iesaistīšanos. Neatkarīgi no tā, vai runa ir par plašu spēļu pasaules izveidi, koncentrēšanos uz kritiskām zonām vai kustīgu objektu izsekošanu, kameru sistēma nodrošina jaudīgu rīku spēļu izstrādātājiem.

Izmantojot kameras kustību, tālummaiņu un papildu efektus, varat radīt burvīgu pieredzi, kas aizrauj spēlētājus un liek viņiem atgriezties, lai uzzinātu vairāk.