Paranna pelikokemustasi Python Arcade -peleillä yhdistämällä kamera.

Pythonin Arcade-kirjasto on tehokas ja käyttäjäystävällinen kehys 2D-pelien luomiseen. Yksi keskeinen ominaisuus, joka voi parantaa huomattavasti pelaamista ja käyttökokemusta, on kameran lisääminen. Kameran lisääminen peliin mahdollistaa dynaamisen kuvaportin manipuloinnin, jolloin pelaaja voi tutkia suurempia pelimaailmoja, keskittyä tiettyihin alueisiin tai seurata liikkuvia kohteita.

Siirtämällä kameran näkökulmaa voit luoda visuaalisesti houkuttelevia tehosteita, parantaa pelimekaniikkaa ja tarjota mukaansatempaavamman pelikokemuksen.

Luo yksinkertainen peli

Ennen aloittamista, asenna pip laitteellesi ja käytä alla olevaa komentoa asentaaksesi pelihalli moduuli:

pip asennus arcade

Aloita nyt luomalla sivulle rullaava peruspeli, jossa pelaaja ohjaa hahmoa, joka voi liikkua vasemmalle ja oikealle nuolinäppäimillä.

Tässä artikkelissa käytetty koodi on saatavilla tässä GitHub-arkisto ja sen käyttö on ilmaista MIT-lisenssin alaisena.

Lisäksi voit lisätä esteen, jonka avulla pelaaja voi liikkua.

tuonti pelihalli

SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
MOVEMENT_SPEED = 5

luokkaaMyGame(pelihalli. Ikkuna):
def__sen sisällä__(itse, leveys, korkeus):
super().__init__(leveys, korkeus)
self.player_x = leveys // 2
self.player_y = korkeus // 2

defperustaa(itse):
arcade.set_background_color (arcade.color. TAIVAANSININEN)

defon_draw(itse):
arcade.start_render()
arcade.draw_circle_filled (self.player_x, self.player_y, 20, arcade.color. PUNAINEN)
arcade.draw_rectangle_filled(400, 200, 80, 40, arcade.color. VIHREÄ)

defpäivittää(itse, delta_aika):
kulkea

defon_key_press(itse, avain, muokkaajat):
jos avain == arcade.key. VASEN:
self.player_x -= LIIKKEEN_NOPEUS
elif avain == arcade.key. OIKEALLA:
self.player_x += MOVEMENT_SPEED

jos __nimi__ == "__main__":
peli = MyGame (SCREEN_WIDTH, SCREEN_HEIGHT)
game.setup()
arcade.run()

Kameran asentaminen

Lisää kamera peliin luomalla a Kamera luokka, joka hallitsee kameran asentoa ja liikettä. Tällä luokalla on attribuutteja, kuten kamera_x ja kamera_y tallentaaksesi kameran koordinaatit.

luokkaaKamera:
def__sen sisällä__(itse):
self.camera_x = 0
self.camera_y = 0

Kameran liike näppäimistön tuloilla

Muokkaa seuraavaksi peliä on_key_press tapa lisätä kamera liikkeet pelaajan syötteiden perusteella. Kun soitin liikkuu vasemmalle tai oikealle, voit päivittää kameran asennon vastaavasti. Säädä myös piirustuskoodia niin, että kameran sijainti otetaan huomioon renderöidessäsi peliobjekteja.

luokkaaMyGame(pelihalli. Ikkuna):
def__sen sisällä__(itse, leveys, korkeus):
super().__init__(leveys, korkeus)
self.camera = Kamera()
self.player_x = leveys // 2
self.player_y = korkeus // 2

defon_key_press(itse, avain, muokkaajat):
jos avain == arcade.key. VASEN:
self.player_x -= LIIKKEEN_NOPEUS
self.camera.camera_x -= LIIKKEEN_NOPEUS
elif avain == arcade.key. OIKEALLA:
self.player_x += MOVEMENT_SPEED
self.camera.camera_x += LIIKKEEN_NOPEUS

defon_draw(itse):
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. PUNAINEN)
arcade.draw_rectangle_filled(400, 200, 80, 40, arcade.color. VIHREÄ)

Kameran liike hiiren tuloilla

Näppäimistötulojen lisäksi voit ottaa käyttöön myös kameran liikkeen hiiren tulojen perusteella. Voit esimerkiksi sallia soittimen panoroida kameraa vetämällä näyttöä. Tämän saavuttamiseksi muokkaa on_mouse_drag tapa päivittää kameran sijainti hiiren liikkeen perusteella.

luokkaaMyGame(pelihalli. Ikkuna):
defon_mouse_drag(itse, x, y, dx, dy, painikkeet, muokkaajat):
jos painikkeet == pelihalli. MOUSE_BUTTON_LEFT:
self.camera.camera_x -= dx
self.camera.camera_y -= dy

Sisältää lisäominaisuuksia

Kameran lisääminen peliisi avaa mahdollisuuksia lisäominaisuuksiin ja tehosteisiin. Tässä on muutamia esimerkkejä siitä, kuinka voit parantaa peliäsi kamerajärjestelmän avulla.

Zoomaustoiminto

Zoomaustoiminnon toteuttamiseksi sinun on esitettävä a Zoomaus muuttuja kohdassa Kamera luokkaa ja muokata on_mouse_scroll tapa päivittää zoomaustaso hiiren pyörän liikkeen perusteella. Sinun on myös säädettävä set_viewport parametreja zoomaustason huomioon ottamiseksi.

luokkaaKamera:
def__sen sisällä__(itse):
self.camera_x = 0
self.camera_y = 0
self.zoom = 1.0

luokkaaMyGame(pelihalli. Ikkuna):

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

defon_draw(itse):
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. PUNAINEN)
arcade.draw_rectangle_filled(400, 200, 80, 40, arcade.color. VIHREÄ)

Tasainen kameran liike

Tasaisemman kameran liikkeen saavuttamiseksi voit ottaa käyttöön interpolointitekniikan, jota kutsutaan lineaariseksi interpolaatioksi (lerp). Muokkaa päivittää menetelmä siirtää kameraa asteittain kohti kohdeasemaa käyttämällä lerp. Tämä luo tasaisen siirtymävaikutelman.

luokkaaKamera:
def__sen sisällä__(itse):
self.camera_x = 0
self.camera_y = 0
self.target_x = 0
self.target_y = 0
self.lerp_speed = 0.1

defpäivittää(itse):
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)

luokkaaMyGame(pelihalli. Ikkuna):

defpäivittää(itse, delta_aika):
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(itse):
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. PUNAINEN)
arcade.draw_rectangle_filled(400, 200, 80, 40, arcade.color. VIHREÄ)

Kameran rajoitukset

Voit estää kameraa siirtymästä tiettyjen rajojen yli asettamalla rajoituksia. Voit esimerkiksi määrittää kameran minimi- ja maksimiasennon ja varmistaa, että kamera pysyy näiden rajojen sisällä.

luokkaaKamera:
def__sen sisällä__(itse):
self.camera_x = 0
self.camera_y = 0
self.min_x = 0
self.max_x = 800
self.min_y = 0
self.max_y = 600

defpäivittää(itse):
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))

luokkaaMyGame(pelihalli. Ikkuna):

defpäivittää(itse, delta_aika):
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(itse):
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. PUNAINEN)
arcade.draw_rectangle_filled(400, 200, 80, 40, arcade.color. VIHREÄ)

Nämä ovat vain muutamia esimerkkejä siitä, kuinka voit hyödyntää kamerajärjestelmää sisällyttääksesi lisäominaisuuksia ja tehosteita Python Arcade -peleihisi.

Voit myös lisätä monia muita lisäominaisuuksia Python-pohjaisiin peleihin. Voit esimerkiksi saada kameran muistamaan sijaintinsa, kun pelaaja siirtyy toiselle tasolle. Tämä varmistaa, että näkymä pysyy samana vaihdettaessa tasojen välillä, mikä tarjoaa sujuvan ja tasaisen kokemuksen pelaajalle.

Kamerajärjestelmän parhaat käytännöt

Kun otat kamerajärjestelmän käyttöön Python Arcade -pelissäsi, on tärkeää noudattaa parhaita käytäntöjä optimaalisen toiminnan ja sujuvan pelikokemuksen varmistamiseksi. Tässä on joitain tärkeitä ohjeita, jotka on pidettävä mielessä:

  • Vältä kameran liiallista liikettä: Vaikka kamera voi lisätä peliisi dynaamisia elementtejä, on tärkeää löytää tasapaino ja välttää kameran liiallista liikettä. Jatkuva kameran asennon muuttaminen voi hämmentää pelaajia ja tehdä heidän navigoinnistaan ​​haastavaksi pelimaailmassa.
  • Testaa eri resoluutioita ja kuvasuhteita: On tärkeää testata kamerajärjestelmääsi eri näyttötarkkuuksilla ja kuvasuhteilla varmistaaksesi, että se toimii hyvin eri laitteissa ja kokoonpanoissa. Tämä auttaa sinua tunnistamaan kaikki näköportin skaalaukseen, objektien sijoitteluun tai kuvasuhteen säätämiseen liittyvät ongelmat.
  • Optimoi renderöinti: Kamerajärjestelmä voi mahdollisesti vaikuttaa pelin suorituskykyyn, varsinkin kun renderöidään suuria pelimaailmoja tai lukuisia esineitä. Renderöinnin optimoimiseksi määritä, mitkä kohteet ovat kameran näkymän ulkopuolella, ja sulje ne pois renderöimisestä.
  • Käsittele reunakoteloita: Kiinnitä huomiota reunatapauksiin, joissa kamera saattaa kohdata tiettyjä skenaarioita, kuten rajoja, törmäyksen havaitsemista tai päällekkäisiä kohteita. Varmista, että kamerajärjestelmä käsittelee nämä tapaukset sulavasti ja tarjoaa sujuvat siirtymät tai asianmukaiset visuaaliset vihjeet osoittamaan rajoituksia tai vuorovaikutusta peliympäristön kanssa.

Noudattamalla näitä parhaita käytäntöjä voit luoda vankan ja käyttäjäystävällisen kamerajärjestelmän, joka integroituu saumattomasti Python Arcade -peleihisi.

Tee peleistä hauskempia kameran avulla

Lisäämällä kameran Python Arcade -peleihisi voit parantaa huomattavasti pelaajien uppoamista ja sitoutumista. Olipa kyseessä laajojen pelimaailmojen luominen, kriittisiin alueisiin keskittyminen tai liikkuvien kohteiden seuraaminen, kamerajärjestelmä tarjoaa tehokkaan työkalun pelien kehittäjille.

Kameran liikkeen, zoomauksen ja lisätehosteiden avulla voit luoda lumoavia kokemuksia, jotka valloittavat pelaajat ja saavat heidät palaamaan lisää.