Či už kolízia spôsobí zapnutie alebo povedie k ukončeniu hry, musíte byť schopní ju odhaliť. Tu je návod, ako to urobiť s arkádovou knižnicou Pythonu.

Kolízie sú základným aspektom hrania v mnohých žánroch videohier. Pridávajú do hier vrstvu výzvy a vzrušenia, ktoré od hráčov vyžadujú, aby sa pohybovali cez prekážky, vyhýbali sa nepriateľom a zbierali odmeny.

Implementácia detekcie kolízií a ich zvládania vo vašich hrách je rozhodujúca pre vytvorenie realistických a dynamických herných mechanizmov, ktoré udržia hráčov v zábere a zabavia sa. Pomocou vstavaných funkcií môžete ľahko odhaliť kolízie s knižnicou arkád.

Vytvorenie jednoduchej hry

Pred začatím sa uistite, že máte pip nainštalovaný na vašom zariadení. Na inštaláciu arkádovej knižnice použite tento príkaz:

arkáda na inštaláciu pipu

Potom vytvorte hru, v ktorej sa hráč môže pohybovať doľava a doprava, aby sa vyhol zrážke s nepriateľským obdĺžnikom. Môžete použiť vstavanú funkciu kreslenia pre škriatkov.

Môžete nájsť kompletné kód v tomto úložisku GitHub.

instagram viewer

Tu je kód pre hru:

importovať pasáž

SCREEN_WIDTH = 640
SCREEN_HEIGHT = 480
RÝCHLOSŤ POHYBU = 5

triedaMyGame(arkáda. okno):
def__init__(ja, šírka, výška):
super().__init__(šírka, výška, "Moja hra")
arcade.set_background_color (arcade.color. BIELY)
self.player = arkáda. SpriteSolidColor(50, 50, arcade.color. MODRÁ)
self.player.center_x = SCREEN_WIDTH // 3
self.player.center_y = 50
seba.nepriateľ = arkáda. SpriteSolidColor(50, 50, arcade.color. ČERVENÁ)
self.nemy.center_x = SCREEN_WIDTH // 2
self.nemy.center_y = 50

defon_draw(ja):
arcade.start_render()
self.player.draw()
self.nepriateľ.draw()

defon_key_press(ja, kľúč, modifikátory):
ak kľúč == arcade.key. VĽAVO:
self.player.center_x -= RÝCHLOSŤ POHYBU
elif kľúč == arcade.key. SPRÁVNY:
self.player.center_x += MOVEMENT_SPEED

defaktualizovať(self, delta_time):
ak arcade.check_for_collision (self.player, self.nepriateľ):
vytlačiť ("Koniec hry")

defHlavná():
hra = MyGame (SCREEN_WIDTH, SCREEN_HEIGHT)
arcade.run()

ak __meno__ == "__Hlavná__":
Hlavná()

Funkcie detekcie kolízie Arcade

Knižnica Arcade poskytuje jednoduchý spôsob detekcie kolízií medzi spritami. The check_for_collision funkcia berie ako argumenty dva sprity a vracia boolovskú hodnotu, ktorá označuje, či sa sprity zrazili. Túto funkciu môžete použiť na zistenie kolízií medzi hráčom a nepriateľskými škriatkami vo vašej hre.

Môžete zmeniť aktualizovať metóda na kontrolu kolízií medzi hráčom a nepriateľskými škriatkami. Ak knižnica zistí kolíziu, môžete tlačiť Koniec hry do konzoly.

Tu je aktualizovaný kód:

defaktualizovať(self, delta_time):
ak arcade.check_for_collision (self.player, self.nepriateľ):
vytlačiť ("Koniec hry")
inak:
self.player.update()

Vďaka tejto zmene vaša hra rozpozná kolízie a vytlačí Koniec hry text, ak sa hráč zrazí s nepriateľom.

Pridanie ďalších funkcií

Aby bola vaša hra pútavejšia, môžete pridať ďalšie funkcie, ako je bodovanie, vylepšenia a viac nepriateľov.

Môžete si napríklad vytvoriť zoznam nepriateľov a aktualizovať hru tak, aby po každej kolízii vytvorila nových nepriateľov na náhodných pozíciách. Môžeš presunúť prehrávač vľavo a vpravo, aby ste sa vyhli nepriateľovi a získali bod. Tu je príklad, ako môžete implementovať tieto funkcie:

importovať náhodný
triedaMyGame(arkáda. okno):
def__init__(ja, šírka, výška):
super().__init__(šírka, výška, "Moja hra")
arcade.set_background_color (arcade.color. BIELY)
self.player = arkáda. SpriteSolidColor(50, 50, arcade.color. MODRÁ)
self.player.center_x = SCREEN_WIDTH // 2
self.player.center_y = 50
seba.nepriatelia = arkáda. SpriteList()
seba.skóre = 0
pre i v rozsah(3):
nepriateľ = arkáda. SpriteSolidColor(50, 50, arcade.color. ČERVENÁ)
nepriateľ.centrum_x = random.randint(0, SCREEN_WIDTH)
nepriateľ.center_y = random.randint (SCREEN_HEIGHT // 2, SCREEN_HEIGHT)
self.enemies.append (nepriateľ)

defon_draw(ja):
arcade.start_render()
self.player.draw()
self.nepriatelia.draw()
arcade.draw_text(f" Skóre: {self.score}", 10, SCREEN_HEIGHT - 30, arcade.color. ČIERNA, 16)

defaktualizovať(self, delta_time):
ak arcade.check_for_collision_with_list (self.player, self.enemies):
vytlačiť ("Koniec hry")
arcade.close_window()
inak:
self.player.update()
pre nepriateľa v seba.nepriatelia:
nepriateľ.center_y -= RÝCHLOSŤ POHYBU / 2
ak nepriateľ.centrum_y < 0:
nepriateľ.centrum_x = random.randint(0, SCREEN_WIDTH)
nepriateľ.center_y = random.randint (SCREEN_HEIGHT // 2, SCREEN_HEIGHT)
seba.skóre += 1

Vďaka týmto zmenám má teraz vaša hra viacero nepriateľov, ktorí sa vynárajú na náhodných pozíciách a pohybujú sa nadol. Hráč získa bod za každého úspešne vyhnutého nepriateľa a hra končí, ak sa hráč zrazí s akýmkoľvek nepriateľom.

Zlepšite zapojenie používateľov pomocou kolízií

Pridaním funkcií detekcie a zvládania kolízií do vašich hier môžete pre hráčov vytvoriť pôsobivejšie a náročnejšie herné zážitky. Od jednoduchých hier vyhýbaj sa a zbieraj až po zložitejšie plošinovky a strieľačky, kolízie zohrávajú kľúčovú úlohu pri vytváraní pútavých a uspokojivých herných mechanizmov.

Ak teda chcete vytvoriť pútavejšie a pohlcujúce hry, ktoré prinútia hráčov vracať sa po viac, zvážte začlenenie funkcií detekcie kolízií do svojich herných mechanizmov.