Nesvarbu, ar susidūrimas suteikia galios, ar baigia žaidimą, turite mokėti jį aptikti. Štai kaip tai padaryti naudojant Python arkadinę biblioteką.

Susidūrimai yra pagrindinis daugelio vaizdo žaidimų žanrų žaidimo aspektas. Jie suteikia žaidimams iššūkių ir jaudulio, todėl žaidėjai turi įveikti kliūtis, vengti priešų ir rinkti apdovanojimus.

Susidūrimų aptikimo ir valdymo įdiegimas žaidimuose yra labai svarbus kuriant tikrovišką ir dinamišką žaidimo mechaniką, kuri leis žaidėjams įsitraukti ir linksmintis. Naudodami įmontuotas funkcijas galite lengvai aptikti susidūrimus su arkadine biblioteka.

Paprasto žaidimo kūrimas

Prieš pradėdami įsitikinkite, kad turite pip įdiegtas jūsų įrenginyje. Norėdami įdiegti arkadų biblioteką, naudokite šią komandą:

pip diegimo pasažas

Po to sukurkite žaidimą, kuriame žaidėjas gali judėti į kairę ir į dešinę, kad nesusidurtų su priešo stačiakampiu. Spraitams galite naudoti integruotą piešimo funkciją.

Galite rasti visą kodas šiame GitHub repo.

Štai žaidimo kodas:

instagram viewer
importuoti arkada

SCREEN_WIDTH = 640
SCREEN_HEIGHT = 480
MOVEMENT_SPEED = 5

klasėMano žaidimas(arkada. Langas):
def__init__(savaime, plotis, aukštis):
super().__init__(plotis, aukštis, "Mano žaidimas")
arcade.set_background_color (arcade.color. BALTAS)
self.player = arkada. SpriteSolidColor(50, 50, arcade.color. MĖLYNA)
self.player.center_x = SCREEN_WIDTH // 3
self.player.center_y = 50
save.priešas = arkada. SpriteSolidColor(50, 50, arcade.color. RAUDONA)
self.enemy.center_x = EKRANO_PLOTIS // 2
self.enem.center_y = 50

defon_draw(savarankiškai):
arcade.start_render()
self.player.draw()
self.enemy.draw()

defyra_key_press(savaime, raktas, modifikatoriai):
jeigu raktas == arcade.key. KAIRĖ:
self.player.center_x -= MOVEMENT_SPEED
elifas raktas == arcade.key. DEŠINĖJE:
self.player.center_x += MOVEMENT_SPEED

defatnaujinti(savaime, delta_laikas):
jeigu arcade.check_for_collision (self.player, self.enemy):
spausdinti ("Žaidimas baigtas")

defpagrindinis():
žaidimas = MyGame (SCREEN_WIDTH, SCREEN_HEIGHT)
arcade.run()

jeigu __vardas__ == "__pagrindinis__":
pagrindinis ()

„Arcade“ susidūrimų aptikimo funkcijos

„Arcade“ biblioteka yra paprastas būdas aptikti spritų susidūrimus. The patikrinti_ar_susidūrimas funkcija paima du spritus kaip argumentus ir grąžina Būlio reikšmę, nurodant, ar spraitai susidūrė. Šią funkciją galite naudoti norėdami aptikti žaidėjo ir priešo spraitų susidūrimus žaidime.

Galite pakeisti atnaujinti būdas patikrinti, ar žaidėjo ir priešo spraitų nėra susidūrimų. Jei biblioteka aptinka susidūrimą, galite spausdinti Žaidimas baigtas prie konsolės.

Štai atnaujintas kodas:

defatnaujinti(savaime, delta_laikas):
jeigu arcade.check_for_collision (self.player, self.enemy):
spausdinti ("Žaidimas baigtas")
Kitas:
self.player.update()

Atlikus šį pakeitimą, žaidimas aptiks susidūrimus ir išspausdins Žaidimas baigtas tekstas, jei žaidėjas susiduria su priešu.

Daugiau funkcijų pridėjimas

Kad žaidimas būtų patrauklesnis, galite pridėti papildomų funkcijų, pvz., taškų skaičiavimo, sustiprinimo ir kelių priešų.

Pavyzdžiui, galite sukurti priešų sąrašą ir atnaujinti žaidimą, kad po kiekvieno susidūrimo atsitiktinėse vietose atsirastų naujų priešų. Tu gali perkelti grotuvą į kairę ir į dešinę, kad išvengtumėte priešo ir gautumėte tašką. Štai pavyzdys, kaip galite įdiegti šias funkcijas:

importuoti atsitiktinis
klasėMano žaidimas(arkada. Langas):
def__init__(savaime, plotis, aukštis):
super().__init__(plotis, aukštis, "Mano žaidimas")
arcade.set_background_color (arcade.color. BALTAS)
self.player = arkada. SpriteSolidColor(50, 50, arcade.color. MĖLYNA)
self.player.center_x = SCREEN_WIDTH // 2
self.player.center_y = 50
save.priešai = arkada. SpriteList()
savarankiškai.balas = 0
dėl i in diapazonas(3):
priešas = arkada. SpriteSolidColor(50, 50, arcade.color. RAUDONA)
enemy.center_x = random.randint(0, SCREEN_WIDTH)
enemy.center_y = random.randint (EKRANO_AUGŠTIS // 2, SCREEN_HEIGHT)
save.priešai.pridėti (priešas)

defon_draw(savarankiškai):
arcade.start_render()
self.player.draw()
self.enemies.draw()
arcade.draw_text(f" balas: {self.score}", 10, SCREEN_HEIGHT – 30, arcade.color. JUODA, 16)

defatnaujinti(savaime, delta_laikas):
jeigu arcade.check_for_collision_with_list (self.player, self.enemies):
spausdinti ("Žaidimas baigtas")
arcade.close_window()
Kitas:
self.player.update()
dėl priešas in save.priešai:
enemy.center_y -= MOVEMENT_SPEED / 2
jeigu priešas.centras_y < 0:
enemy.center_x = random.randint(0, SCREEN_WIDTH)
enemy.center_y = random.randint (EKRANO_AUGŠTIS // 2, SCREEN_HEIGHT)
savarankiškai.balas += 1

Dėl šių pakeitimų jūsų žaidime dabar yra keli priešai, kurie atsiranda atsitiktinėse vietose ir juda žemyn. Žaidėjas uždirba tašką už kiekvieną sėkmingai išvengtą priešą, o žaidimas baigiasi žaidėjui susidūrus su kokiu nors priešu.

Pagerinkite naudotojų įtraukimą į susidūrimus

Pridėję prie žaidimų susidūrimų aptikimo ir valdymo funkcijas, galite sukurti patrauklesnę ir sudėtingesnę žaidimo patirtį žaidėjams. Nuo paprastų vengimo ir rinkimo žaidimų iki sudėtingesnių platformingų ir šaudyklių – susidūrimai atlieka lemiamą vaidmenį kuriant patrauklią ir patenkinamą žaidimo mechaniką.

Taigi, jei norite sukurti patrauklesnius ir įtraukiančius žaidimus, kad žaidėjai sugrįžtų daugiau, apsvarstykite galimybę į savo žaidimo mechaniką įtraukti susidūrimų aptikimo funkcijas.