Of een botsing nu een power-up oplevert of tot game over leidt, je moet het kunnen detecteren. Hier leest u hoe u dit doet met de arcadebibliotheek van Python.

Botsingen zijn een fundamenteel aspect van gameplay in veel genres van videogames. Ze voegen een laag uitdaging en opwinding toe aan games, waarbij spelers door obstakels moeten navigeren, vijanden moeten ontwijken en beloningen moeten verzamelen.

Het implementeren van botsingsdetectie en -afhandeling in je games is cruciaal voor het creëren van realistische en dynamische gameplay-mechanismen die spelers betrokken en vermaakt houden. U kunt eenvoudig botsingen met de arcadebibliotheek detecteren met behulp van de ingebouwde functies.

Een eenvoudig spel maken

Controleer voordat u begint of u dat hebt gedaan pip op uw apparaat geïnstalleerd. Gebruik deze opdracht om de arcadebibliotheek te installeren:

pip installeren arcade

Maak daarna een spel waarin de speler naar links en rechts kan bewegen om te voorkomen dat hij in botsing komt met een vijandelijke rechthoek. U kunt de ingebouwde tekenfunctie voor sprites gebruiken.

instagram viewer

U vindt de volledige code in deze GitHub-opslagplaats.

Hier is de code voor het spel:

importeren arcade

SCREEN_WIDTH = 640
SCHERM_HOOGTE = 480
BEWEGING_SPEED = 5

klasMijn spel(arcade. Raam):
def__in het__(zelf, breedte, hoogte):
super().__init__(breedte, hoogte, "Mijn spel")
arcade.set_background_color (arcade.kleur. WIT)
self.player = speelhal. SpriteSolidColor(50, 50, arcade.kleur. BLAUW)
self.player.center_x = SCREEN_WIDTH // 3
self.player.center_y = 50
zelf.vijand = arcade. SpriteSolidColor(50, 50, arcade.kleur. ROOD)
self.enemy.center_x = SCREEN_WIDTH // 2
zelf.vijand.center_y = 50

defon_draw(zelf):
arcade.start_render()
self.player.draw()
zelf.vijand.trekking()

defon_key_press(zelf, sleutel, modifiers):
als sleutel == arcade.sleutel. LINKS:
self.player.center_x -= MOVEMENT_SPEED
elif sleutel == arcade.sleutel. RECHTS:
self.player.center_x += MOVEMENT_SPEED

defupdate(zelf, delta_tijd):
als arcade.check_for_collision (self.player, self.enemy):
afdrukken("Spel is over")

defvoornaamst():
spel = Mijnspel (SCREEN_WIDTH, SCREEN_HEIGHT)
speelhal.run()

als __naam__ == "__voornaamst__":
voornaamst()

Arcade's Collision Detection-functies

De Arcade-bibliotheek biedt een eenvoudige manier om botsingen tussen sprites te detecteren. De check_for_botsing functie neemt twee sprites als argumenten en retourneert een Booleaanse waarde die aangeeft of de sprites zijn gebotst. Je kunt deze functie gebruiken om botsingen tussen de speler en vijandelijke sprites in je spel te detecteren.

U kunt de update methode om te controleren op botsingen tussen de speler en vijandelijke sprites. Als de bibliotheek een botsing detecteert, kunt u afdrukken Spel is over naar de console.

Hier is de bijgewerkte code:

defupdate(zelf, delta_tijd):
als arcade.check_for_collision (self.player, self.enemy):
afdrukken("Spel is over")
anders:
self.player.update()

Met deze wijziging detecteert je game botsingen en wordt deze afgedrukt Spel is over tekst als de speler in botsing komt met de vijand.

Meer functies toevoegen

Om je spel aantrekkelijker te maken, kun je extra functies toevoegen, zoals scoren, power-ups en meerdere vijanden.

Je kunt bijvoorbeeld een lijst met vijanden maken en het spel updaten om na elke botsing nieuwe vijanden op willekeurige posities te spawnen. Jij kan verplaats de speler links en rechts om de vijand te ontwijken en een punt te scoren. Hier is een voorbeeld van hoe u deze functies kunt implementeren:

importeren willekeurig
klasMijn spel(arcade. Raam):
def__in het__(zelf, breedte, hoogte):
super().__init__(breedte, hoogte, "Mijn spel")
arcade.set_background_color (arcade.kleur. WIT)
self.player = speelhal. SpriteSolidColor(50, 50, arcade.kleur. BLAUW)
self.player.center_x = SCREEN_WIDTH // 2
self.player.center_y = 50
zelf.vijanden = arcade. SpriteLijst()
zelf.score = 0
voor i in bereik(3):
vijand = arcade. SpriteSolidColor(50, 50, arcade.kleur. ROOD)
vijand.center_x = willekeurig.randint(0, SCREEN_WIDTH)
vijand.centrum_y = willekeurig.randint (SCREEN_HEIGHT // 2, SCREEN_HEIGHT)
self.enemies.append (vijand)

defon_draw(zelf):
arcade.start_render()
self.player.draw()
zelf.vijanden.draw()
speelhal.teken_tekst(f"Score: {zelfscore}", 10, SCREEN_HEIGHT - 30, arcade.kleur. ZWART, 16)

defupdate(zelf, delta_tijd):
als arcade.check_for_collision_with_list (self.player, self.enemies):
afdrukken("Spel is over")
arcade.close_window()
anders:
self.player.update()
voor vijand in zelf.vijanden:
vijand.center_y -= MOVEMENT_SPEED / 2
als vijand.centrum_y < 0:
vijand.center_x = willekeurig.randint(0, SCREEN_WIDTH)
vijand.centrum_y = willekeurig.randint (SCREEN_HEIGHT // 2, SCREEN_HEIGHT)
zelfscore += 1

Met deze veranderingen heeft je game nu meerdere vijanden die op willekeurige posities spawnen en naar beneden gaan. De speler verdient een punt voor elke succesvol vermeden vijand en het spel eindigt als de speler in botsing komt met een vijand.

Verbeter gebruikersbetrokkenheid met botsingen

Door botsingsdetectie- en afhandelingsfuncties aan je games toe te voegen, kun je meer meeslepende en uitdagende gameplay-ervaringen voor spelers creëren. Van eenvoudige vermijd-en-verzamelspellen tot complexere platformgames en shooters, botsingen spelen een cruciale rol bij het creëren van boeiende en bevredigende gameplay-mechanismen.

Dus als je meer boeiende en meeslepende games wilt maken die ervoor zorgen dat spelers blijven terugkomen voor meer, overweeg dan om botsingsdetectiefuncties op te nemen in je gameplay-mechanica.