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. ROHELINEklassMä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 // 4defon_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 / 2kui 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 / 2kui 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 arvudefon_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 = 100klassMänguaken(arkaad. aken):
def__selles__(ise):
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "Hüppamehaanika")
ise.jump_pressed = Vale
ise.hüppe_jõud = 0defon_key_press(ise, võti, muutjad):
on_ground = PLAYER_RADIUS + self.platform_y + PLATFORM_HEIGHT / 2kui võti == arcade.key. ÜLES ja self.player_y == on_ground:
ise.jump_pressed = Tõsidefon_key_release(ise, võti, muutjad):
kui võti == arcade.key. UP:
ise.jump_pressed = Valedefupdate_jump_power(ise):
# Suurendage hüppenuppu all hoides hüppevõimsust
kui self.jump_pressed:
self.jump_power += JUMP_POWER_INCREMENTkui self.jump_power > MAX_JUMP_POWER:
self.jump_power = MAX_JUMP_POWER
muidu:
kui self.jump_power > 0:
ise.hüppe_jõud -= 1defon_update(ise, delta_aeg):
self.player_dy -= GRAVITSIOON
dist = PLAYER_RADIUS + self.platform_y + PLATFORM_HEIGHT / 2kui 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 = 2klassMä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õsidefon_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 = Valedefon_update(ise, delta_aeg):
self.player_dy -= GRAVITSIOON
self.player_y += self.player_dydist = 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 = Valeself.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.