Useimmat tasohyppelypelit käyttävät tietyntyyppisiä hyppyjä, muunnelmilla, kuten kaksoishypyllä ja vaihtelevan korkeudella. Tutustu näiden liikkeiden takana oleviin tekniikoihin.

Hyppymekaniikalla on ratkaiseva rooli tasohyppelypelin pelikokemuksen parantamisessa. Ottamalla käyttöön erilaisia ​​hyppymekaniikkoja Pythonin Arcade Libraryn kanssa voit lisätä peleihin syvyyttä ja jännitystä.

Arcade-kirjasto tarjoaa intuitiivisen ja helppokäyttöisen kehyksen pelien luomiseen, joten se on ihanteellinen valinta tasohyppelyn luomiseen.

Luo yksinkertainen peli

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

pip asennus arcade

Tutustuaksesi hyppymekaniikan toimintaan, aloita luomalla yksinkertainen peli, jossa pelaaja voi liikkua vasemmalle ja oikealle painovoiman ja staattisen alustan avulla.

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

Pelissä pelaaja törmää alustaan ​​ja seisoo sen päällä. Luo uusi tiedosto nimeltä simple-game.py ja lisää alla oleva koodi:

tuonti pelihalli

SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
PLAYER_RADIUS = 20
PLATFORM_WIDTH = 200
PLATFORM_HEIGHT = 20
PAINOVAISUUS = 0.5
sininen = arcade.color. SININEN
vihreä = arcade.color. VIHREÄ

luokkaaGameWindow(pelihalli. Ikkuna):
def__sen sisällä__(itse):
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "Hyppymekaniikka")
self.player_x = SCREEN_WIDTH // 2
self.player_y = SCREEN_HEIGHT // 2
self.player_dy = 0
self.platform_x = SCREEN_WIDTH // 2
self.platform_y = SCREEN_HEIGHT // 4

defon_draw(itse):
arcade.start_render()

arcade.draw_circle_filled (self.player_x, self.player_y,
PLAYER_RADIUS, sininen)

arcade.draw_rectangle_filled (self.platform_x, self.platform_y,
PLATFORM_WIDTH, PLATFORM_HEIGHT, vihreä)

defon_update(itse, delta_aika):
self.player_dy -= PAINOVOIMA
self.player_y += self.player_dy
dist = PLAYER_RADIUS + self.platform_y + PLATFORM_HEIGHT / 2

jos self.player_y < dist:
self.player_y = dist
self.player_dy = 0

peli = GameWindow()
arcade.run()

Kun suoritat ohjelman, näet pelaajaobjektin putoavan nopeasti alustalle ja lepäävän sitten sen päällä.

Yksinkertaisen hyppyominaisuuden lisääminen

Lisää nyt peliin yksinkertainen hyppyominaisuus. Tarkista soittimen ja alustan välinen törmäys ja laukaisee hyppytoiminnon, kun pelaaja painaa ylänuolinäppäintä. Tämän saavuttamiseksi luo uusi tiedosto nimeltä jump.py ja koodi alla olevilla päivityksillä:

luokkaaGameWindow(pelihalli. Ikkuna):
def__sen sisällä__(itse):
# ...

defon_key_press(itse, avain, muokkaajat):
on_ground = PLAYER_RADIUS + self.platform_y + PLATFORM_HEIGHT / 2

jos avain == arcade.key. YLÖS ja self.player_y == on_ground:
self.player_dy = 10

defon_update(itse, delta_aika):
self.player_dy -= PAINOVOIMA
self.player_y += self.player_dy
dist = PLAYER_RADIUS + self.platform_y + PLATFORM_HEIGHT / 2

jos self.player_y < dist:
self.player_y = dist
self.player_dy = 0
self.jump_count = 0

Double Jump -ominaisuuden lisääminen

Voit lisätä kaksoishyppyominaisuuden laajentamalla olemassa olevaa hyppylogiikkaa. Kun pelaaja on alustalla ja painaa ylänuolinäppäintä ensimmäistä kertaa, hän suorittaa tavallisen hypyn. Jos he kuitenkin painavat ylös-nuolinäppäintä uudelleen ollessaan ilmassa, pelaaja suorittaa kaksoishypyn.

Luo uusi tiedosto nimeltä double-jump.py ja koodi alla olevilla päivityksillä:

luokkaaGameWindow(pelihalli. Ikkuna):
def__sen sisällä__(itse):
self.jump_count = 0# Seuraa hyppyjen määrää

defon_key_press(itse, avain, muokkaajat):
on_ground = PLAYER_RADIUS + self.platform_y + PLATFORM_HEIGHT / 2

jos avain == arcade.key. YLÖS:
jos self.player_y == on_ground tai self.jump_count < 2:
self.player_dy = 10
self.jump_count += 1

Sisältää lisäominaisuuksia

Yksinkertaisten ja kaksoishyppyjen lisäksi voit lisätä monia ominaisuuksia parantaaksesi pelisi hyppymekaniikkaa.

Muuttuvan hyppykorkeuden toteuttaminen

Jos pelaaja voi hallita hyppyjen korkeutta sen perusteella, kuinka kauan hän pitää hyppypainiketta painettuna, se voi lisätä pelin hallintaa ja strategiaa. Tässä on esimerkki siitä, kuinka voit ottaa käyttöön muuttuvan hyppykorkeuden. Luo uusi tiedosto nimeltä variable-jump.py ja koodi alla olevilla päivityksillä:

PAINOVAISUUS = 0.5
JUMP_POWER_INCREMENT = 0.2
MAX_JUMP_POWER = 100

luokkaaGameWindow(pelihalli. Ikkuna):
def__sen sisällä__(itse):
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "Hyppymekaniikka")
self.jump_pressed = Väärä
self.jump_power = 0

defon_key_press(itse, avain, muokkaajat):
on_ground = PLAYER_RADIUS + self.platform_y + PLATFORM_HEIGHT / 2

jos avain == arcade.key. YLÖS ja self.player_y == on_ground:
self.jump_pressed = Totta

defon_key_release(itse, avain, muokkaajat):
jos avain == arcade.key. YLÖS:
self.jump_pressed = Väärä

defupdate_jump_power(itse):
# Lisää hyppytehoa, kun hyppypainiketta pidetään painettuna
jos self.jump_pressed:
self.jump_power += JUMP_POWER_INCREMENT

jos self.jump_power > MAX_JUMP_POWER:
self.jump_power = MAX_JUMP_POWER
muu:
jos self.jump_power > 0:
self.jump_power -= 1

defon_update(itse, delta_aika):
self.player_dy -= PAINOVOIMA
dist = PLAYER_RADIUS + self.platform_y + PLATFORM_HEIGHT / 2

jos self.player_y == dist ja self.jump_power > 0:
self.player_dy = self.jump_power

self.player_y += self.player_dy
self.update_jump_power()

Air Dash -ominaisuuden käyttöönotto

Ilmanohjausmekaanikon lisääminen voi antaa pelaajalle lisää liikkumisvaihtoehtoja ollessaan ilmassa. Luo uusi tiedosto nimeltä air-dash.py ja koodi alla olevilla päivityksillä:

AIR_DASH_DISTANCE = 100
MAX_AIR_DASHES = 2

luokkaaGameWindow(pelihalli. Ikkuna):
def__sen sisällä__(itse):
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "Hyppymekaniikka")
self.on_ground = Väärä
self.air_dashes = 0
self.can_air_dash = Totta

defon_key_press(itse, avain, muokkaajat):
jos avain == arcade.key. YLÖS ja self.on_ground:
self.player_dy = 10
elif avain == arcade.key. YLÖS ja \
self.air_dash < MAX_AIR_DASHES ja \
self.can_air_dash:
self.player_dx = AIR_DASH_DISTANCE
self.air_dashes += 1
self.can_air_dash = Väärä

defon_update(itse, delta_aika):
self.player_dy -= PAINOVOIMA
self.player_y += self.player_dy

dist = PLAYER_RADIUS + self.platform_y + PLATFORM_HEIGHT / 2

jos self.player_y <= dist:
self.player_y = dist
self.player_dy = 0
self.on_ground = Totta
muu:
self.on_ground = Väärä

self.player_x += self.player_dx

jos self.player_x < PLAYER_RADIUS:
self.player_x = PLAYER_RADIUS
self.player_dx = 0
elif self.player_x > SCREEN_WIDTH - PLAYER_RADIUS:
self.player_x = SCREEN_WIDTH - PLAYER_RADIUS
self.player_dx = 0

jos self.on_ground:
self.air_dashes = 0
self.can_air_dash = Totta

Kun suoritat ilmaviivan, pelaajahahmosi siirtyy kauas alustalta:

Hyppymekaniikan parhaat käytännöt

Hyppymekaniikan käyttöönotto pelissä vaatii huolellista harkintaa sujuvan ja nautinnollisen pelikokemuksen varmistamiseksi. Tässä on joitain parhaita käytäntöjä, jotka kannattaa pitää mielessä:

Tasapainohypyn korkeus ja kesto

Realismin ja pelin vaikeuden tunteen säilyttämiseksi on tärkeää tasapainottaa hypyn korkeus ja kesto. Liian korkea tai lyhyt hyppy voi vaikuttaa negatiivisesti pelaamiseen. Kokeile erilaisia ​​hyppykorkeuksia ja -kestoja löytääksesi oikean tasapainon peliisi.

Harkitse pelin fysiikkaa, hahmojen kykyjä ja yleistä tasosuunnittelua, kun määrität sopivaa hyppymekaniikkaa.

Anna visuaalista ja äänipalautetta

Visuaalinen ja äänipalaute on ratkaisevan tärkeää, jotta hyppyt tuntuvat reagoivilta ja tyydyttäviltä. Käytä animaatioita tai hiukkastehosteita kuvaamaan pelaajan hyppyliikettä ja laskeutumista.

Lisäksi harkitse äänitehosteiden tai taustamusiikin lisääminen mikä parantaa hyppykokemusta. Nämä visuaaliset ja äänimerkit edistävät pelaajien uppoamista ja sitoutumista.

Hienosäädä törmäystunnistus

Tarkka törmäysten havaitseminen soittimen ja alustojen välillä on välttämätöntä tarkalle ja luotettavalle hyppymekaniikalle. Varmista, että törmäyksentunnistusalgoritmi on vankka ja käsittelee oikein erilaisia ​​skenaarioita, kuten tasolle laskeutuminen, törmäys esteisiin tai liukuminen seiniä pitkin.

Testaa ja toista törmäyksentunnistuskoodia poistaaksesi häiriöt tai epäjohdonmukaisuudet, jotka voivat vaikuttaa hyppymekaniikkaan.

Tee peleistä hauskempi hyppymekaniikka

Hyppymekaniikan lisääminen voi parantaa huomattavasti pelin sitoutumista ja nautintoa. Se avaa uusia mahdollisuuksia tasosuunnitteluun, pulmiin ja haastaviin esteisiin. Ottamalla käyttöön erilaisia ​​hyppymekaniikkoja Pythonin Arcade Game Libraryssa voit luoda kiehtovia tasohyppelypelejä, jotka viihdyttävät pelaajia tuntikausia.

Muista, että kokeilemalla erilaisia ​​hyppymekaniikkoja ja yhdistämällä ainutlaatuisia ominaisuuksia voit erottaa pelisi muista ja tehdä pelaajille mukaansatempaavan ja mieleenpainuvan kokemuksen.