Č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.
Tu je kód pre hru:
importovať pasáž
SCREEN_WIDTH = 640
SCREEN_HEIGHT = 480
RÝCHLOSŤ POHYBU = 5triedaMyGame(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 = 50defon_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_SPEEDdefaktualizovať(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.