Oavsett om en kollision ger en power-up eller leder till game over, måste du kunna upptäcka det. Så här gör du det med Pythons arkadbibliotek.

Kollisioner är en grundläggande aspekt av spelet i många genrer av videospel. De lägger till ett lager av utmaning och spänning till spel, vilket kräver att spelare navigerar över hinder, undviker fiender och samlar in belöningar.

Att implementera kollisionsdetektering och hantering i dina spel är avgörande för att skapa realistisk och dynamisk spelmekanik som håller spelarna engagerade och underhållna. Du kan enkelt upptäcka kollisioner med arkadbiblioteket med hjälp av dess inbyggda funktioner.

Skapa ett enkelt spel

Innan du börjar, se till att du har pip installerad på din enhet. Använd detta kommando för att installera arkadbiblioteket:

pip installera arkad

Efter det skapar du ett spel där spelaren kan flytta åt vänster och höger för att undvika att kollidera med en fienderektangel. Du kan använda den inbyggda ritfunktionen för sprites.

Du kan hitta hela kod i denna GitHub-repo.

instagram viewer

Här är koden för spelet:

importera arkad

SCREEN_WIDTH = 640
SCREEN_HEIGHT = 480
MOVEMENT_SPEED = 5

klassMitt spel(arkad. Fönster):
def__i det__(själv, bredd, höjd):
super().__init__(bredd, höjd, "Mitt spel")
arcade.set_background_color (arcade.color. VIT)
self.player = arkad. SpriteSolidColor(50, 50, arkad.färg. BLÅ)
self.player.center_x = SCREEN_WIDTH // 3
self.player.center_y = 50
själv.fiende = arkad. SpriteSolidColor(50, 50, arkad.färg. RÖD)
self.enemy.center_x = SCREEN_WIDTH // 2
self.enemy.center_y = 50

defon_draw(själv):
arcade.start_render()
self.player.draw()
self.enemy.draw()

defon_key_press(själv, nyckel, modifierare):
om nyckel == arkad.nyckel. VÄNSTER:
self.player.center_x -= MOVEMENT_SPEED
elif nyckel == arkad.nyckel. HÖGER:
self.player.center_x += MOVEMENT_SPEED

defuppdatering(själv, delta_tid):
om arcade.check_for_collision (self.player, self.enemy):
skriva ut("Game Over")

defhuvud():
spel = MyGame (SCREEN_WIDTH, SCREEN_HEIGHT)
arcade.run()

om __namn__ == "__huvud__":
main()

Arcades kollisionsdetektionsfunktioner

Arcade-biblioteket ger ett enkelt sätt att upptäcka kollisioner mellan sprites. De check_for_collision funktion tar två sprites som argument och returnerar ett booleskt värde som indikerar om sprites har kolliderat. Du kan använda den här funktionen för att upptäcka kollisioner mellan spelaren och fiendens sprites i ditt spel.

Du kan ändra uppdatering metod för att kontrollera kollisioner mellan spelaren och fiendens sprites. Om biblioteket upptäcker en kollision kan du skriva ut Game Over till konsolen.

Här är den uppdaterade koden:

defuppdatering(själv, delta_tid):
om arcade.check_for_collision (self.player, self.enemy):
skriva ut("Game Over")
annan:
self.player.update()

Med denna ändring kommer ditt spel att upptäcka kollisioner och skriva ut Game Over text om spelaren kolliderar med fienden.

Lägger till fler funktioner

För att göra ditt spel mer engagerande kan du lägga till extra funktioner som poäng, power-ups och flera fiender.

Du kan till exempel skapa en lista med fiender och uppdatera spelet för att skapa nya fiender på slumpmässiga positioner efter varje kollision. Du kan flytta spelaren vänster och höger för att undvika fienden och få en poäng. Här är ett exempel på hur du kan implementera dessa funktioner:

importera slumpmässig
klassMitt spel(arkad. Fönster):
def__i det__(själv, bredd, höjd):
super().__init__(bredd, höjd, "Mitt spel")
arcade.set_background_color (arcade.color. VIT)
self.player = arkad. SpriteSolidColor(50, 50, arkad.färg. BLÅ)
self.player.center_x = SCREEN_WIDTH // 2
self.player.center_y = 50
self.enemies = arkad. SpriteList()
self.score = 0
för i i räckvidd(3):
fiende = arkad. SpriteSolidColor(50, 50, arkad.färg. RÖD)
enemy.center_x = random.randint(0, SCREEN_WIDTH)
enemy.center_y = random.randint (SCREEN_HEIGHT // 2, SCREEN_HEIGHT)
self.enemies.append (fiende)

defon_draw(själv):
arcade.start_render()
self.player.draw()
self.enemies.draw()
arcade.draw_text(f"Betyg: {self.score}", 10, SCREEN_HEIGHT - 30, arkad.färg. SVART, 16)

defuppdatering(själv, delta_tid):
om arcade.check_for_collision_with_list (self.player, self.enemies):
skriva ut("Game Over")
arcade.close_window()
annan:
self.player.update()
för fiende i self.enemies:
enemy.center_y -= MOVEMENT_SPEED / 2
om enemy.center_y < 0:
enemy.center_x = random.randint(0, SCREEN_WIDTH)
enemy.center_y = random.randint (SCREEN_HEIGHT // 2, SCREEN_HEIGHT)
self.score += 1

Med dessa förändringar har ditt spel nu flera fiender som spawner på slumpmässiga positioner och rör sig nedåt. Spelaren tjänar en poäng för varje framgångsrikt undvikad fiende, och spelet slutar om spelaren kolliderar med någon fiende.

Förbättra användarengagemang med kollisioner

Genom att lägga till kollisionsdetektering och hanteringsfunktioner i dina spel kan du skapa mer uppslukande och utmanande spelupplevelser för spelare. Från enkla undvika-och-samla-spel till mer komplexa plattformsspel och skjutspel, kollisioner spelar en avgörande roll för att skapa engagerande och tillfredsställande spelmekanik.

Så om du vill skapa mer engagerande och uppslukande spel som får spelare att komma tillbaka för mer, överväg att integrera kollisionsdetekteringsfunktioner i din spelmekanik.