Enamik platvormmänge kasutab teatud tüüpi hüppeid, mille variatsioonid hõlmavad topelthüpet ja muutuva kõrgusega hüppeid. Avastage nende liigutuste taga olevad tehnikad.

Hüppemehaanika mängib platvormimängu mängukogemuse parandamisel otsustavat rolli. Rakendades Pythoni arkaadraamatukoguga erinevaid hüppemehaanikaid, saate lisada oma mängudele sügavust ja põnevust.

Arcade'i teek pakub mängude loomiseks intuitiivset ja hõlpsasti kasutatavat raamistikku, mistõttu on see ideaalne valik oma platvormi loomiseks.

Looge lihtne mäng

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

pip install arkaad

Hüppemehaanika toimimise uurimiseks alustage lihtsa mängu loomisega, kus mängija saab liikuda raskusjõu ja staatilise platvormi abil vasakule ja paremale.

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

Mängus põrkab mängija kokku platvormiga ja seisab selle peal. Looge uus fail nimega lihtne-mäng.py ja lisage allolev kood:

importida arkaad

SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
PLAYER_RADIUS = 20
PLATFORM_WIDTH = 200
PLATFORM_HEIGHT = 20
GRAVITSIOON = 0.5
sinine = arkaad.värv. SININE
roheline = arkaad.värv. ROHELINE

klassMänguaken(arkaad. aken):
def__selles__(ise):
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "Hüppamehaanika")
self.player_x = SCREEN_WIDTH // 2
self.player_y = EKRAANI_KÕRGUS // 2
self.player_dy = 0
self.platform_x = SCREEN_WIDTH // 2
self.platform_y = SCREEN_HEIGHT // 4

defon_draw(ise):
arcade.start_render()

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

arcade.draw_rectangle_filled (self.platform_x, self.platform_y,
PLATFORM_WIDTH, PLATFORM_HEIGHT, roheline)

defon_update(ise, delta_aeg):
self.player_dy -= GRAVITSIOON
self.player_y += self.player_dy
dist = PLAYER_RADIUS + self.platform_y + PLATFORM_HEIGHT / 2

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

mäng = GameWindow()
arcade.run()

Kui käivitate programmi, näete, et mängija objekt kukub kiiresti platvormile ja jääb seejärel selle peale puhkama.

Lihtsa hüppefunktsiooni lisamine

Nüüd lisage mängule lihtne hüppefunktsioon. Kontrollige mängija ja platvormi kokkupõrget ja käivitab hüppamise, kui mängija vajutab üles-nooleklahvi. Selle saavutamiseks looge uus fail nimega hüpata.py ja kood koos allolevate värskendustega:

klassMänguaken(arkaad. aken):
def__selles__(ise):
# ...

defon_key_press(ise, võti, muutjad):
on_ground = PLAYER_RADIUS + self.platform_y + PLATFORM_HEIGHT / 2

kui võti == arcade.key. ÜLES ja self.player_y == on_ground:
self.player_dy = 10

defon_update(ise, delta_aeg):
self.player_dy -= GRAVITSIOON
self.player_y += self.player_dy
dist = PLAYER_RADIUS + self.platform_y + PLATFORM_HEIGHT / 2

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

Topelthüppe lisamine

Topelthüppe lisamiseks laiendage olemasolevat hüppeloogikat. Kui mängija on platvormil ja vajutab esimest korda üles nooleklahvi, sooritab ta tavalise hüppe. Kui nad aga õhus olles uuesti üles-nooleklahvi vajutavad, sooritab mängija topelthüppe.

Looge uus fail nimega topelthüpe.py ja kood koos allolevate värskendustega:

klassMänguaken(arkaad. aken):
def__selles__(ise):
self.jump_count = 0# Jälgige hüpete arvu

defon_key_press(ise, võti, muutjad):
on_ground = PLAYER_RADIUS + self.platform_y + PLATFORM_HEIGHT / 2

kui võti == arcade.key. UP:
kui self.player_y == on_ground või ise.hüppe_loendus < 2:
self.player_dy = 10
self.jump_count += 1

Kaasa arvatud lisafunktsioonid

Peale lihtsate ja topelthüpete on palju funktsioone, mida saate oma mängu hüppemehaanika täiustamiseks lisada.

Muutuva hüppekõrguse rakendamine

Kui lubate mängijal oma hüpete kõrgust juhtida selle alusel, kui kaua nad hüppenuppu all hoiavad, saate mängule rohkem kontrolli ja strateegiat lisada. Siin on näide muutuva hüppekõrguse rakendamiseks. Looge uus fail nimega variable-jump.py ja kood koos allolevate värskendustega:

GRAVITSIOON = 0.5
JUMP_POWER_INCREMENT = 0.2
MAX_JUMP_POWER = 100

klassMänguaken(arkaad. aken):
def__selles__(ise):
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "Hüppamehaanika")
ise.jump_pressed = Vale
ise.hüppe_jõud = 0

defon_key_press(ise, võti, muutjad):
on_ground = PLAYER_RADIUS + self.platform_y + PLATFORM_HEIGHT / 2

kui võti == arcade.key. ÜLES ja self.player_y == on_ground:
ise.jump_pressed = Tõsi

defon_key_release(ise, võti, muutjad):
kui võti == arcade.key. UP:
ise.jump_pressed = Vale

defupdate_jump_power(ise):
# Suurendage hüppenuppu all hoides hüppevõimsust
kui self.jump_pressed:
self.jump_power += JUMP_POWER_INCREMENT

kui self.jump_power > MAX_JUMP_POWER:
self.jump_power = MAX_JUMP_POWER
muidu:
kui self.jump_power > 0:
ise.hüppe_jõud -= 1

defon_update(ise, delta_aeg):
self.player_dy -= GRAVITSIOON
dist = PLAYER_RADIUS + self.platform_y + PLATFORM_HEIGHT / 2

kui 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 Dashi funktsiooni rakendamine

Õhuklapi mehaaniku lisamine võib anda mängijale õhus viibimise ajal täiendavaid liikumisvõimalusi. Looge uus fail nimega air-dash.py ja kood koos allolevate värskendustega:

AIR_DASH_DISTANCE = 100
MAX_AIR_DASHES = 2

klassMänguaken(arkaad. aken):
def__selles__(ise):
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "Hüppamehaanika")
self.on_ground = Vale
self.air_dashes = 0
self.can_air_dash = Tõsi

defon_key_press(ise, võti, muutjad):
kui võti == arcade.key. ÜLES ja self.on_ground:
self.player_dy = 10
elif võti == arcade.key. ÜLES ja \
self.air_dashes < MAX_AIR_DASHES ja \
self.can_air_dash:
self.player_dx = AIR_DASH_DISTANCE
self.air_dashes += 1
self.can_air_dash = Vale

defon_update(ise, delta_aeg):
self.player_dy -= GRAVITSIOON
self.player_y += self.player_dy

dist = PLAYER_RADIUS + self.platform_y + PLATFORM_HEIGHT / 2

kui self.player_y <= dist:
self.player_y = dist
self.player_dy = 0
self.on_ground = Tõsi
muidu:
self.on_ground = Vale

self.player_x += self.player_dx

kui 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

kui self.on_ground:
self.air_dashes = 0
self.can_air_dash = Tõsi

Kui sooritate õhulöögi, liigub teie mängija tegelane platvormist kaugele:

Hüppemehaanika parimad tavad

Hüppemehaanika rakendamine mängus nõuab hoolikat kaalumist, et tagada sujuv ja nauditav mängukogemus. Siin on mõned parimad tavad, mida meeles pidada.

Tasakaaluhüppe kõrgus ja kestus

Realismi ja mängu raskusastme säilitamiseks on oluline tasakaalustada hüppe kõrgust ja kestust. Liiga kõrge või lühike hüpe võib mängule negatiivselt mõjuda. Katsetage erinevate hüpete kõrguste ja kestustega, et leida oma mängu jaoks õige tasakaal.

Sobiva hüppemehaanika määramisel võtke arvesse mängu füüsikat, tegelaste võimeid ja üldist tasemekujundust.

Pakkuge visuaalset ja helilist tagasisidet

Visuaalne ja heliline tagasiside on ülioluline, et hüpped tunduksid tundlikud ja rahuldust pakkuvad. Kasutage animatsioone või osakeste efekte, et kujutada mängija hüppavat liikumist ja maandumist.

Lisaks kaaluge heliefektide või taustamuusika lisamine mis suurendab hüppekogemust. Need visuaalsed ja helilised vihjed aitavad kaasa mängijate keelekümblusele ja kaasamisele.

Kokkupõrketuvastuse peenhäälestus

Täpne kokkupõrgete tuvastamine mängija ja platvormide vahel on täpse ja usaldusväärse hüppemehaanika jaoks hädavajalik. Veenduge, et kokkupõrketuvastusalgoritm on töökindel ja käsitleb õigesti erinevaid stsenaariume, nagu platvormile maandumine, kokkupõrge takistustega või mööda seinu libisemine.

Testige ja korrake oma kokkupõrketuvastuskoodi, et kõrvaldada kõik hüppemehaanikat mõjutada võivad tõrked või ebakõlad.

Muutke mängud hüppemehaanika abil lõbusamaks

Hüppemehaanika lisamine võib oluliselt suurendada mängu kaasatust ja naudingut. See avab uusi võimalusi tasemekujunduseks, mõistatusteks ja väljakutseteks. Rakendades Pythoni arkaadmängude raamatukogus erinevaid hüppemehaanikaid, saate luua põnevaid platvormimänge, mis hoiavad mängijaid tundide kaupa meelelahutust.

Pidage meeles, et erinevate hüppemehaanikatega katsetamine ja ainulaadsete funktsioonide lisamine võib teie mängu eristada ning muuta see mängijatele kaasahaarava ja meeldejääva kogemuse.