Daugumoje platformos žaidimų naudojami tam tikri šuolio tipai, kurių variantai apima dvigubą šuolį ir kintamo aukščio šuolį. Atraskite šių judesių techniką.

Šokinėjimo mechanika vaidina lemiamą vaidmenį gerinant platformingo žaidimo patirtį. Įdiegę įvairią šokinėjimo mechaniką naudodami Python's Arcade Library, galite suteikti žaidimams gylio ir jaudulio.

„Arcade“ biblioteka suteikia intuityvią ir lengvai naudojamą žaidimų kūrimo sistemą, todėl tai yra idealus pasirinkimas kuriant platformerį.

Sukurkite paprastą žaidimą

Prieš pradėdami, įdiekite pip savo įrenginyje ir naudokite šią komandą, kad įdiegtumėte arkada modulis:

pip diegimo pasažas

Norėdami ištirti, kaip veikia šokinėjimo mechanika, pradėkite nuo paprasto žaidimo, kuriame žaidėjas gali judėti į kairę ir dešinę su gravitacija ir statine platforma.

Šiame straipsnyje naudojamas kodas pateikiamas čia GitHub saugykla ir jūs galite nemokamai naudotis pagal MIT licenciją.

Žaidime žaidėjas susidurs su platforma ir atsistos ant jos. Sukurkite naują failą pavadinimu paprastas žaidimas.py ir pridėkite žemiau esantį kodą:

instagram viewer
importuoti arkada

SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
PLAYER_RADIUS = 20
PLATFORM_WIDTH = 200
PLATFORM_HEIGHT = 20
GRAVITACIJA = 0.5
mėlyna = arkada.spalva. MĖLYNA
žalia = arkada.spalva. ŽALIAS

klasėŽaidimo langas(arkada. Langas):
def__init__(savarankiškai):
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, „Šuolių mechanika“)
self.player_x = SCREEN_WIDTH // 2
self.player_y = EKRANO AUKŠTIS // 2
self.player_dy = 0
self.platform_x = SCREEN_WIDTH // 2
self.platform_y = SCREEN_HEIGHT // 4

defon_draw(savarankiškai):
arcade.start_render()

arcade.draw_circle_filled (self.player_x, self.player_y,
PLAYER_RADIUS, mėlyna)

arcade.draw_rectangle_filled (self.platform_x, self.platform_y,
PLATFORM_WIDTH, PLATFORM_HEIGHT, žalia)

defon_update(savaime, delta_laikas):
self.player_dy -= GRAVITACIJA
self.player_y += self.player_dy
dist = PLAYER_RADIUS + self.platform_y + PLATFORM_HEIGHT / 2

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

žaidimas = GameWindow()
arcade.run()

Kai paleisite programą, pamatysite, kad žaidėjo objektas greitai nukrenta ant platformos ir liks ant jos.

Paprasto šuolio funkcijos pridėjimas

Dabar į žaidimą pridėkite paprastą šuolio funkciją. Patikrinkite žaidėjo ir platformos susidūrimą ir suaktyvinkite šokinėjimo veiksmą, kai žaidėjas paspaudžia rodyklės aukštyn klavišą. Norėdami tai padaryti, sukurkite naują failą pavadinimu jump.py ir kodas su toliau pateiktais atnaujinimais:

klasėŽaidimo langas(arkada. Langas):
def__init__(savarankiškai):
# ...

defyra_key_press(savaime, raktas, modifikatoriai):
on_ground = PLAYER_RADIUS + self.platform_y + PLATFORM_HEIGHT / 2

jeigu raktas == arcade.key. AUKŠTYN ir self.player_y == on_ground:
self.player_dy = 10

defon_update(savaime, delta_laikas):
self.player_dy -= GRAVITACIJA
self.player_y += self.player_dy
dist = PLAYER_RADIUS + self.platform_y + PLATFORM_HEIGHT / 2

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

Dvigubo šuolio funkcijos pridėjimas

Norėdami pridėti dvigubo šuolio funkciją, išplėskite esamą šuolio logiką. Kai žaidėjas yra ant platformos ir pirmą kartą paspaus rodyklės aukštyn klavišą, jis atliks įprastą šuolį. Tačiau jei jie dar kartą paspaus rodyklės aukštyn klavišą būdami ore, žaidėjas atliks dvigubą šuolį.

Sukurkite naują failą pavadinimu dvigubas šuolis.py ir kodas su toliau pateiktais atnaujinimais:

klasėŽaidimo langas(arkada. Langas):
def__init__(savarankiškai):
self.jump_count = 0# Stebėkite šuolių skaičių

defyra_key_press(savaime, raktas, modifikatoriai):
on_ground = PLAYER_RADIUS + self.platform_y + PLATFORM_HEIGHT / 2

jeigu raktas == arcade.key. AUKŠTYN:
jeigu self.player_y == on_ground arba self.jump_count < 2:
self.player_dy = 10
self.jump_count += 1

Įskaitant papildomas funkcijas

Be paprastų ir dvigubų šuolių, yra daug funkcijų, kurias galite pridėti, kad pagerintumėte žaidimo šokinėjimo mechaniką.

Kintamo šuolio aukščio įgyvendinimas

Leidžiant žaidėjui valdyti savo šuolių aukštį pagal tai, kiek laiko jie laiko šuolio mygtuką, žaidimui gali būti suteikta daugiau kontrolės ir strategijos. Štai pavyzdys, kaip galite įdiegti kintamą šuolio aukštį. Sukurkite naują failą pavadinimu variable-jump.py ir kodas su toliau pateiktais atnaujinimais:

GRAVITACIJA = 0.5
JUMP_POWER_INCREMENT = 0.2
MAX_JUMP_POWER = 100

klasėŽaidimo langas(arkada. Langas):
def__init__(savarankiškai):
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, „Šuolių mechanika“)
savarankiškai.jump_pressed = Netiesa
self.jump_power = 0

defyra_key_press(savaime, raktas, modifikatoriai):
on_ground = PLAYER_RADIUS + self.platform_y + PLATFORM_HEIGHT / 2

jeigu raktas == arcade.key. AUKŠTYN ir self.player_y == on_ground:
savarankiškai.jump_pressed = Tiesa

defon_key_release(savaime, raktas, modifikatoriai):
jeigu raktas == arcade.key. AUKŠTYN:
savarankiškai.jump_pressed = Netiesa

defupdate_jump_power(savarankiškai):
# Padidinkite šuolio galią, kol paspaudę šuolio mygtuką
jeigu self.jump_pressed:
self.jump_power += JUMP_POWER_INCREMENT

jeigu self.jump_power > MAX_JUMP_POWER:
self.jump_power = MAX_JUMP_POWER
Kitas:
jeigu self.jump_power > 0:
self.jump_power -= 1

defon_update(savaime, delta_laikas):
self.player_dy -= GRAVITACIJA
dist = PLAYER_RADIUS + self.platform_y + PLATFORM_HEIGHT / 2

jeigu self.player_y == dist ir self.jump_power > 0:
self.player_dy = self.jump_power

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

„Air Dash“ funkcijos įdiegimas

Pridėjus oro prietaisų skydelio mechaniką, žaidėjas gali daugiau judėti ore. Sukurkite naują failą pavadinimu air-dash.py ir kodas su toliau pateiktais atnaujinimais:

AIR_DASH_DISTANCE = 100
MAX_AIR_DASHES = 2

klasėŽaidimo langas(arkada. Langas):
def__init__(savarankiškai):
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, „Šuolių mechanika“)
self.on_ground = Netiesa
self.air_dashes = 0
self.can_air_dash = Tiesa

defyra_key_press(savaime, raktas, modifikatoriai):
jeigu raktas == arcade.key. AUKŠTYN ir self.on_ground:
self.player_dy = 10
elifas raktas == arcade.key. AUKŠTYN ir \
self.air_dashes < MAX_AIR_DASHES ir \
self.can_air_dash:
self.player_dx = AIR_DASH_DISTANCE
self.air_dashes += 1
self.can_air_dash = Netiesa

defon_update(savaime, delta_laikas):
self.player_dy -= GRAVITACIJA
self.player_y += self.player_dy

dist = PLAYER_RADIUS + self.platform_y + PLATFORM_HEIGHT / 2

jeigu self.player_y <= dist:
self.player_y = dist
self.player_dy = 0
self.on_ground = Tiesa
Kitas:
self.on_ground = Netiesa

self.player_x += self.player_dx

jeigu self.player_x < PLAYER_RADIUS:
self.player_x = PLAYER_RADIUS
self.player_dx = 0
elifas self.player_x > SCREEN_WIDTH – PLAYER_RADIUS:
self.player_x = SCREEN_WIDTH – PLAYER_RADIUS
self.player_dx = 0

jeigu self.on_ground:
self.air_dashes = 0
self.can_air_dash = Tiesa

Kai atliksite oro brūkšnį, jūsų žaidėjo personažas pasitrauks toli nuo platformos:

Geriausia šokinėjimo mechanikos praktika

Norint užtikrinti sklandų ir malonų žaidimo patirtį, norint žaidime įdiegti šokinėjimo mechaniką, reikia atidžiai apsvarstyti. Štai keletas geriausių praktikų, kurių reikia nepamiršti:

Balanso šuolio aukštis ir trukmė

Norint išlaikyti tikroviškumo ir žaidimo sudėtingumo jausmą, svarbu subalansuoti šuolio aukštį ir trukmę. Per aukštas arba per trumpas šuolis gali neigiamai paveikti žaidimą. Eksperimentuokite su skirtingais šuolių aukščiais ir trukme, kad rastumėte tinkamą žaidimo pusiausvyrą.

Nustatydami tinkamą šuolio mechaniką, atsižvelkite į žaidimo fiziką, charakterio sugebėjimus ir bendrą lygio dizainą.

Pateikite vaizdo ir garso atsiliepimus

Vaizdinis ir garsinis grįžtamasis ryšys yra labai svarbus norint, kad šuoliai būtų jautrūs ir patenkinti. Naudokite animaciją arba dalelių efektus, kad pavaizduotumėte žaidėjo šokinėjimo judesį ir nusileidimą.

Be to, apsvarstykite garso efektų ar foninės muzikos pridėjimas kuris pagerina šokinėjimo patirtį. Šios vaizdo ir garso užuominos prisideda prie žaidėjų įsitraukimo ir įtraukimo.

Tikslus susidūrimo aptikimas

Tikslus žaidėjo ir platformų susidūrimo aptikimas yra būtinas tiksliam ir patikimam šokinėjimo mechanikui. Įsitikinkite, kad susidūrimo aptikimo algoritmas yra tvirtas ir tinkamai valdo įvairius scenarijus, pvz., nusileidimą ant platformos, susidūrimą su kliūtimis arba slydimą sienomis.

Išbandykite ir kartokite susidūrimo aptikimo kodą, kad pašalintumėte visus trikdžius ar neatitikimus, kurie gali turėti įtakos šokinėjimo mechanikai.

Padarykite žaidimus linksmesnius naudodami šokinėjimo mechaniką

Pridėta šokinėjimo mechanika gali labai padidinti žaidimo įsitraukimą ir malonumą. Tai atveria naujas lygių dizaino, galvosūkių ir sudėtingų kliūčių galimybes. Įdiegę skirtingą šuolių mechaniką Python arkadinių žaidimų bibliotekoje, galite sukurti patrauklius platformingo žaidimus, kurie leis žaidėjams linksmintis valandų valandas.

Atminkite, kad eksperimentuodami su įvairia šuolio mechanika ir įtraukdami unikalias funkcijas, jūsų žaidimas gali būti išskirtinis ir padaryti jį įtraukiančia bei įsimintina žaidėjų patirtimi.