Täiustage oma mängukogemust Python Arcade mängudega, lisades kaamera.

Pythoni arkaadteek on võimas ja kasutajasõbralik raamistik 2D-mängude loomiseks. Üks põhifunktsioon, mis võib mängu ja kasutajakogemust oluliselt parandada, on kaamera lisamine. Kaamera lisamine mängule võimaldab dünaamilist vaateava manipuleerimist, võimaldades mängijal uurida suuremaid mängumaailmu, keskenduda kindlatele aladele või jälgida liikuvaid objekte.

Kaamera vaatepunkti liigutades saate luua visuaalselt ahvatlevaid efekte, täiustada mängumehaanikat ja pakkuda kaasahaaravamat mängukogemust.

Looge lihtne mäng

Enne alustamist installige oma seadmesse pip ja kasutage installimiseks allolevat käsku arkaad moodul:

pip install arkaad

Nüüd alustage lihtsa külgkerimise mängu loomisega, kus mängija juhib tegelast, kes saab nooleklahvide abil vasakule ja paremale liikuda.

Selles artiklis kasutatud kood on saadaval selles GitHubi hoidla ja seda saate MIT-i litsentsi alusel tasuta kasutada.

Lisaks saate mängijale navigeerimiseks takistuse lisada.

instagram viewer
importida arkaad

SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
MOVEMENT_SPEED = 5

klassMinu Mäng(arkaad. aken):
def__selles__(ise, laius, kõrgus):
super().__init__(laius, kõrgus)
self.player_x = laius // 2
self.player_y = kõrgus // 2

defseadistamine(ise):
arcade.set_background_color (arcade.color. TAEVASININE)

defon_draw(ise):
arcade.start_render()
arcade.draw_circle_filled (self.player_x, self.player_y, 20, arcade.color. PUNANE)
arcade.draw_rectangle_filled(400, 200, 80, 40, arcade.color. ROHELINE)

defvärskendada(ise, delta_aeg):
üle andma

defon_key_press(ise, võti, muutjad):
kui võti == arcade.key. VASAKULE:
self.player_x -= LIIKUMISE_KIIRUS
elif võti == arcade.key. PAREMALE:
self.player_x += LIIKUMISE_KIIRUS

kui __nimi__ == "__main__":
mäng = MyGame (SCREEN_WIDTH, SCREEN_HEIGHT)
game.setup()
arcade.run()

Kaamera seadistamine

Kaamera lisamiseks mängu looge a Kaamera klass, mis juhib kaamera asendit ja liikumist. Sellel klassil on sellised atribuudid nagu kaamera_x ja kaamera_y kaamera koordinaatide salvestamiseks.

klassKaamera:
def__selles__(ise):
self.camera_x = 0
self.camera_y = 0

Kaamera liikumine klaviatuuri sisenditega

Järgmisena muutke mängu on_key_press meetod kaamera lisamiseks liikumine mängija sisendite põhjal. Kui mängija liigub vasakule või paremale, saate kaamera asukohta vastavalt värskendada. Samuti kohandage joonistuskoodi, et võtta mänguobjektide renderdamisel arvesse kaamera asukohta.

klassMinu Mäng(arkaad. aken):
def__selles__(ise, laius, kõrgus):
super().__init__(laius, kõrgus)
self.camera = Kaamera()
self.player_x = laius // 2
self.player_y = kõrgus // 2

defon_key_press(ise, võti, muutjad):
kui võti == arcade.key. VASAKULE:
self.player_x -= LIIKUMISE_KIIRUS
self.camera.camera_x -= LIIKUMISE_KIIRUS
elif võti == arcade.key. PAREMALE:
self.player_x += LIIKUMISE_KIIRUS
self.camera.camera_x += LIIKUMISE_KIIRUS

defon_draw(ise):
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. PUNANE)
arcade.draw_rectangle_filled(400, 200, 80, 40, arcade.color. ROHELINE)

Kaamera liikumine hiire sisenditega

Lisaks klaviatuurisisenditele saate lubada kaamera liikumise ka hiire sisendite alusel. Näiteks saate lubada mängijal kaamerat ekraani lohistades panoraamida. Selle saavutamiseks muutke on_mouse_drag meetod kaamera asukoha värskendamiseks hiire liikumise põhjal.

klassMinu Mäng(arkaad. aken):
defon_mouse_drag(ise, x, y, dx, dy, nupud, modifikaatorid):
kui nupud == arkaad. MOUSE_BUTTON_LEFT:
self.camera.camera_x -= dx
self.camera.camera_y -= dy

Kaasa arvatud lisafunktsioonid

Kaamera lisamine mängule avab võimaluste maailma lisafunktsioonide ja efektide jaoks. Siin on mõned näited selle kohta, kuidas saate kaamerasüsteemi kasutades oma mängu veelgi täiustada.

Suumi funktsionaalsus

Suumifunktsiooni rakendamiseks peate tutvustama a suumi muutuja Kaamera klassi ja muutke on_mouse_scroll meetod suumitaseme värskendamiseks hiireratta liikumise põhjal. Samuti peate kohandama set_viewport parameetrid, et arvestada suumi taset.

klassKaamera:
def__selles__(ise):
self.camera_x = 0
self.camera_y = 0
ise.zoom = 1.0

klassMinu Mäng(arkaad. aken):

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

defon_draw(ise):
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. PUNANE)
arcade.draw_rectangle_filled(400, 200, 80, 40, arcade.color. ROHELINE)

Sujuv kaamera liikumine

Kaamera sujuvama liikumise saavutamiseks võite kasutusele võtta interpolatsioonitehnika, mida nimetatakse lineaarseks interpolatsiooniks (lerp). Muutke värskendada meetod kaamera järkjärguliseks liigutamiseks sihtasendi poole, kasutades lerp. See loob sujuva ülemineku efekti.

klassKaamera:
def__selles__(ise):
self.camera_x = 0
self.camera_y = 0
self.target_x = 0
self.target_y = 0
ise.lerp_speed = 0.1

defvärskendada(ise):
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)

klassMinu Mäng(arkaad. aken):

defvärskendada(ise, delta_aeg):
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(ise):
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. PUNANE)
arcade.draw_rectangle_filled(400, 200, 80, 40, arcade.color. ROHELINE)

Kaamera piirangud

Kaamera teatud piiridest kaugemale liikumise vältimiseks võite kehtestada piirangud. Näiteks saate määrata kaamera minimaalse ja maksimaalse asendi ning tagada, et kaamera jääks nende piiridesse.

klassKaamera:
def__selles__(ise):
self.camera_x = 0
self.camera_y = 0
ise.min_x = 0
ise.max_x = 800
ise.min_y = 0
ise.max_y = 600

defvärskendada(ise):
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))

klassMinu Mäng(arkaad. aken):

defvärskendada(ise, delta_aeg):
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(ise):
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. PUNANE)
arcade.draw_rectangle_filled(400, 200, 80, 40, arcade.color. ROHELINE)

Need on vaid mõned näited selle kohta, kuidas saate kaamerasüsteemi võimendada, et lisada Python Arcade mängudesse lisafunktsioone ja efekte.

Saate oma Pythoni-põhistele mängudele lisada ka palju muid lisafunktsioone. Näiteks saate panna kaamera oma asendit meelde jätma, kui mängija liigub teisele tasemele. See tagab, et vaade jääb tasemete vahel üleminekul samaks, pakkudes mängijale sujuvat ja ühtlast kogemust.

Kaamerasüsteemi parimad tavad

Kaamerasüsteemi juurutamisel Python Arcade mängus on oluline järgida parimaid tavasid, et tagada optimaalne funktsionaalsus ja sujuv mängijakogemus. Siin on mõned peamised juhised, mida meeles pidada.

  • Vältige kaamera liigset liikumist: Kuigi kaamera võib teie mängule dünaamilisi elemente lisada, on ülioluline leida tasakaal ja vältida kaamera liigset liikumist. Pidev kaamera asendi muutmine võib mängijaid segada ja muuta nende jaoks mängumaailmas navigeerimise keeruliseks.
  • Testige erinevate eraldusvõimete ja kuvasuhetega: on oluline testida oma kaamerasüsteemi erinevate ekraanieraldusvõimete ja kuvasuhetega, et tagada selle hea toimimine erinevates seadmetes ja konfiguratsioonides. See aitab teil tuvastada vaateava skaleerimise, objekti positsioneerimise või kuvasuhte reguleerimisega seotud probleeme.
  • Optimeerige renderdamist: Kaamerasüsteem võib mõjutada mängu jõudlust, eriti kui renderdate suuri mängumaailmu või paljusid objekte. Renderduse optimeerimiseks määrake, millised objektid on väljaspool kaamera vaadet, ja välistage need renderdamisest.
  • Käepideme äärekohvrid: pöörake tähelepanu servajuhtumitele, kus kaamera võib kokku puutuda konkreetsete stsenaariumidega, nagu piirid, kokkupõrke tuvastamine või kattuvad objektid. Veenduge, et kaamerasüsteem käsitleks neid juhtumeid graatsiliselt ja pakuks sujuvaid üleminekuid või asjakohaseid visuaalseid näpunäiteid, mis näitavad piiranguid või koostoimeid mängukeskkonnaga.

Neid parimaid tavasid järgides saate luua tugeva ja kasutajasõbraliku kaamerasüsteemi, mis integreerub sujuvalt teie Python Arcade mängudesse.

Muutke mängud kaamera abil lõbusamaks

Kui lisate oma Python Arcade mängudele kaamera, saate märkimisväärselt parandada mängijate keelekümblust ja kaasatust. Kaamerasüsteem on mänguarendajatele võimas tööriist, olgu selleks siis laiaulatuslike mängumaailmade loomine, kriitilistele piirkondadele keskendumine või liikuvate objektide jälgimine.

Kaamera liikumist, suumimist ja lisaefekte kasutades saate luua lummavaid elamusi, mis lummavad mängijaid ja panevad neid tagasi tulema.