Priverskite savo pagrindinį veikėją judėti reaguodamas į žaidėjo įvestį su Arcade bibliotekos klaviatūros ir pelės įvykiais.
Arcade yra populiari Python biblioteka, kurią galite naudoti kurdami 2D arkadinius žaidimus. Tai paprasta naudoti biblioteka, kuri suteikia paprastą sistemą žaidimams su Python kurti.
Vienas iš esminių bet kurio žaidimo komponentų yra žaidėjo judėjimas.
Paprasto žaidimo kūrimas arkadoje
Galite rasti visą kodas šiame GitHub repo.
Prieš pradėdami įsitikinkite, kad turite pip įdiegtas jūsų įrenginyje. Norėdami įdiegti arkadų biblioteką, naudokite šią komandą:
pip diegimo biblioteka
Po to sukurkite grotuvo klasę kaip poklasį arkada. Sprite klasė ir a Mano žaidimas klasė kaip poklasis arkada. Langas. The Mano žaidimas klasė turės metodus, kaip nustatyti žaidimo objektus, pateikti juos ekrane, atnaujinti žaidimo būseną ir tvarkyti vartotojo įvestis. Žaidimo ekrano ir žaidėjo objekto kūrimo kodas yra toks:
importuoti arkada
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600klasėŽaidėjas(arkada. Sprite):
def__init__(savarankiškai):
super().__init__("player.png", 0.5)
self.center_x = SCREEN_WIDTH // 2
self.center_y = EKRANO_AUGŠTIS // 2klasėMano žaidimas(arkada. Langas):
def__init__(savarankiškai):
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "Mano žaidimas")
savarankiškai.žaidėjas = Nė vienas
arcade.set_background_color (arcade.color. JUODA)defsąranka(savarankiškai):
self.player = Žaidėjas ()defon_draw(savarankiškai):
arcade.start_render()
self.player.draw()defatnaujinti(savaime, delta_laikas):
praeiti
MyGame().run()
Grotuvo judesių pridėjimas naudojant klaviatūros įvestį
Dabar, kai sukūrėte žaidimo ekraną ir žaidėjo objektą, galite perkelti grotuvą reaguodami į klaviatūros įvestį. Apibrėžkite on_key_press() ir on_key_release() metodus, kuriuos iškviesite, kai grotuvas paspaus arba atleis klavišą.
defyra_key_press(savaime, raktas, modifikatoriai):
jeigu raktas == arcade.key. KAIRĖ:
self.player.change_x = -5
elifas raktas == arcade.key. DEŠINĖJE:
self.player.change_x = 5
elifas raktas == arcade.key. AUKŠTYN:
self.player.change_y = 5
elifas raktas == arcade.key. ŽEMYN:
self.player.change_y = -5
defon_key_release(savaime, raktas, modifikatoriai):
jeigu raktas == arcade.key. KAIRĖ arba raktas == arcade.key. DEŠINĖJE:
self.player.change_x = 0
elifas raktas == arcade.key. AUKŠTYN arba raktas == arcade.key. ŽEMYN:
self.player.change_y = 0
Pridėdami žaidėjo judesį naudodami klaviatūros įvestis, galite tinkinti judėjimo greitį pakeisdami priskirtą reikšmę self.player.change_x ir self.player.change_y. Taip pat galite pridėti sąlygų, kad apribotumėte žaidėjo judėjimą žaidimo ekrane.
Grotuvo judesio pridėjimas naudojant pelės įvestį
Be klaviatūros įvesties, taip pat galite pridėti grotuvo judėjimą naudodami pelės įvestį. Apibrėžkite on_mouse_motion() metodas, kuris veiks žaidėjui pajudinus pelę. Metodo viduje nustatykite centras_x ir centras_y žaidėjo objekto savybes į esamą pelės padėtį.
defon_mouse_motion(savaime, x, y, dx, dy):
self.player.center_x = x
self.player.center_y = y
Pridėdami žaidėjo judėjimą naudodami pelės įvestį, galite tinkinti grotuvo objekto elgesį, kai vartotojas spustelėja arba laiko pelę, apibrėždami tokius metodus kaip on_mouse_press() arba on_mouse_drag(). Šiuos metodus galite naudoti norėdami suaktyvinti žaidėjo veiksmus, tokius kaip šaudymas ar šokinėjimas, priklausomai nuo žaidimo mechanikos.
Pristatome papildomas funkcijas
Galite dar labiau pagerinti žaidėjo judėjimą atsižvelgdami į pagreitį ir lėtėjimą. Modifikuoti on_key_press() būdas atimti arba pridėti prie keisti_x ir keisti_y žaidėjo objekto savybės, priklausomai nuo judėjimo krypties. Taip pat nustatykite keisti_x ir keisti_y savybės į 0 on_key_release() metodas, kaip ir anksčiau.
defyra_key_press(savaime, raktas, modifikatoriai):
jeigu raktas == arcade.key. KAIRĖ:
self.player.change_x -= 5
elifas raktas == arcade.key. DEŠINĖJE:
self.player.change_x += 5
elifas raktas == arcade.key. AUKŠTYN:
self.player.change_y += 5
elifas raktas == arcade.key. ŽEMYN:
self.player.change_y -= 5
defon_key_release(savaime, raktas, modifikatoriai):
jeigu raktas == arcade.key. KAIRĖ arba raktas == arcade.key. DEŠINĖJE:
self.player.change_x = 0
elifas raktas == arcade.key. AUKŠTYN arba raktas == arcade.key. ŽEMYN:
self.player.change_y = 0
Kaip ir PyGame, taip pat galite pridėti žaidėjo objekto susidūrimo aptikimą ir kiti žaidimo objektai, tokie kaip priešai ar kliūtys arkadoje. Tai galite pasiekti pridėdami šį kodą prie atnaujinti () metodas Mano žaidimas klasė:
defatnaujinti(savaime, delta_laikas):
self.player.update()# Patikrinkite, ar nėra susidūrimų tarp žaidėjo ir kitų žaidimo objektų
susidūrimai = arcade.check_for_collision_with_list (self.player, self.enemy_list)
dėl susidūrimas in susidūrimai:
susidūrimas.žudyti()
Žaiskite patrauklius žaidimus naudodami interaktyvų žaidėjo judėjimą
Interaktyvus žaidėjo judėjimas yra esminis bet kurio patrauklaus žaidimo aspektas. Įvairių tipų judesių mechanikos, tokios kaip šokinėjimas, bėgimas, skraidymas ir slydimas, naudojimas gali suteikti žaidimui įvairovės ir azarto.
Žaidėjams suteikiant galimybę valdyti savo judėjimą, suteikiamas agentūros ir pasinėrimo jausmas, o tai gali lemti malonesnę žaidimų patirtį.