Laat je hoofdpersonage bewegen als reactie op de input van de speler met de toetsenbord- en muisgebeurtenissen van de Arcade-bibliotheek.

Arcade is een populaire Python-bibliotheek die je kunt gebruiken om 2D-arcadegames te maken. Het is een gebruiksvriendelijke bibliotheek die een eenvoudig raamwerk biedt voor het maken van games met Python.

Een van de essentiële onderdelen van elk spel is de beweging van de speler.

Een eenvoudig spel maken in Arcade

U vindt de volledige code in deze GitHub-opslagplaats.

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

pip installatiebibliotheek

Maak daarna een Player-klasse als een subklasse van de arcade. Sprite klasse, en een Mijn spel klasse als een subklasse van arcade. Raam. De Mijn spel class heeft methoden om de game-objecten in te stellen, ze op het scherm weer te geven, de gamestatus bij te werken en gebruikersinvoer af te handelen. De code voor het maken van het spelscherm en het spelerobject is als volgt:

instagram viewer
importeren arcade

SCREEN_WIDTH = 800
SCHERM_HOOGTE = 600

klasSpeler(arcade. Sprite):
def__in het__(zelf):
super().__init__("speler.png", 0.5)
self.center_x = SCREEN_WIDTH // 2
self.center_y = SCREEN_HEIGHT // 2

klasMijn spel(arcade. Raam):
def__in het__(zelf):
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "Mijn spel")
zelf.speler = Geen
arcade.set_background_color (arcade.kleur. ZWART)

defopgericht(zelf):
zelf.speler = Speler()

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

defupdate(zelf, delta_tijd):
doorgang

MijnSpel().run()

Spelersbewegingen toevoegen met toetsenbordinvoer

Nu je het spelscherm en het spelerobject hebt gemaakt, kun je de speler verplaatsen als reactie op toetsenbordinvoer. Definieer de on_key_press() En on_key_release() methoden, die u aanroept wanneer de speler een toets indrukt of loslaat.

defon_key_press(zelf, sleutel, modifiers):
als sleutel == arcade.sleutel. LINKS:
self.player.change_x = -5
elif sleutel == arcade.sleutel. RECHTS:
self.player.change_x = 5
elif sleutel == arcade.sleutel. OMHOOG:
self.player.change_y = 5
elif sleutel == arcade.sleutel. OMLAAG:
self.player.change_y = -5

defon_key_release(zelf, sleutel, modifiers):
als sleutel == arcade.sleutel. LINKS of sleutel == arcade.sleutel. RECHTS:
self.player.change_x = 0
elif sleutel == arcade.sleutel. OMHOOG of sleutel == arcade.sleutel. OMLAAG:
self.player.change_y = 0

Wanneer u spelerbewegingen toevoegt met toetsenbordinvoer, kunt u de bewegingssnelheid aanpassen door de toegewezen waarde te wijzigen self.player.change_x En self.player.change_y. Je kunt ook voorwaarden toevoegen om de beweging van spelers binnen het spelscherm te beperken.

Spelersbewegingen toevoegen met muisinvoer

Naast toetsenbordinvoer kunt u ook spelerbewegingen toevoegen met behulp van muisinvoer. Definieer de on_mouse_motion() methode, die wordt uitgevoerd wanneer de speler de muis beweegt. Stel binnen de methode de centrum_x En centrum_y eigenschappen van het spelerobject toe aan de huidige muispositie.

defon_mouse_motion(zelf, x, y, dx, dy):
self.player.center_x = x
self.player.center_y = y

Wanneer u spelerbewegingen toevoegt met muisinvoer, kunt u het gedrag van het spelerobject aanpassen wanneer de gebruiker klikt of de muis ingedrukt houdt door methoden te definiëren zoals on_mouse_press() of on_mouse_drag(). Je kunt deze methoden gebruiken om acties van spelers te activeren, zoals schieten of springen, afhankelijk van de spelmechanismen.

Introductie van extra functies

Je kunt de beweging van spelers verder verbeteren door rekening te houden met versnelling en vertraging. Wijzig de on_key_press() methode om af te trekken of toe te voegen aan de verandering_x En verander_y eigenschappen van het spelerobject, afhankelijk van de bewegingsrichting. Stel ook de verandering_x En verander_y eigenschappen naar 0 in de on_key_release() methode, zoals eerder.

defon_key_press(zelf, sleutel, modifiers):
als sleutel == arcade.sleutel. LINKS:
self.player.change_x -= 5
elif sleutel == arcade.sleutel. RECHTS:
self.player.change_x += 5
elif sleutel == arcade.sleutel. OMHOOG:
self.player.change_y += 5
elif sleutel == arcade.sleutel. OMLAAG:
self.player.change_y -= 5

defon_key_release(zelf, sleutel, modifiers):
als sleutel == arcade.sleutel. LINKS of sleutel == arcade.sleutel. RECHTS:
self.player.change_x = 0
elif sleutel == arcade.sleutel. OMHOOG of sleutel == arcade.sleutel. OMLAAG:
self.player.change_y = 0

Net als PyGame kan dat ook botsingsdetectie toevoegen tussen het spelerobject en andere game-objecten, zoals vijanden of obstakels in arcade. U kunt dit bereiken door de volgende code toe te voegen aan het update() methode van de Mijn spel klas:

defupdate(zelf, delta_tijd):
self.player.update()

# Controleer op botsingen tussen speler en andere spelobjecten
botsingen = arcade.check_for_collision_with_list (self.player, self.enemy_list)

voor botsing in botsingen:
botsing.kill()

Maak boeiende games met interactieve spelerbewegingen

Interactieve spelersbewegingen zijn een cruciaal aspect van elke boeiende game. Het gebruik van verschillende soorten bewegingsmechanismen, zoals springen, rennen, vliegen en glijden, kan variatie en opwinding aan het spel toevoegen.

Spelers controle geven over hun bewegingen voegt een gevoel van keuzevrijheid en onderdompeling toe, wat kan leiden tot een meer bevredigende spelervaring.