Få din huvudkaraktär att röra på sig som svar på spelarinput med Arcade-bibliotekets tangentbords- och mushändelser.
Arcade är ett populärt Python-bibliotek som du kan använda för att skapa 2D-arkadspel. Det är ett lättanvänt bibliotek som ger ett enkelt ramverk för att skapa spel med Python.
En av de viktigaste komponenterna i alla spel är spelarens rörelse.
Skapa ett enkelt spel i Arcade
Du kan hitta hela kod i denna GitHub-repo.
Innan du börjar, se till att du har pip installerad på din enhet. Använd detta kommando för att installera arkadbiblioteket:
pip installationsbibliotek
Efter det skapar du en Player-klass som en underklass till arkad. Sprite klass och en Mitt spel klass som en underklass av arkad. Fönster. De Mitt spel klass kommer att ha metoder för att ställa in spelobjekten, rendera dem på skärmen, uppdatera speltillståndet och hantera användarinmatningar. Koden för att skapa spelskärmen och spelarobjektet är följande:
importera arkad
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600klassSpelare(arkad. Sprite):
def__i det__(själv):
super().__init__("player.png", 0.5)
self.center_x = SCREEN_WIDTH // 2
self.center_y = SCREEN_HEIGHT // 2klassMitt spel(arkad. Fönster):
def__i det__(själv):
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "Mitt spel")
self.player = Ingen
arcade.set_background_color (arcade.color. SVART)defuppstart(själv):
self.player = Player()defon_draw(själv):
arcade.start_render()
self.player.draw()defuppdatering(själv, delta_tid):
passera
MyGame().run()
Lägga till spelarrörelse med tangentbordsinmatning
Nu när du har skapat spelskärmen och spelarobjektet kan du flytta spelaren som svar på tangentbordsinmatning. Definiera on_key_press() och on_key_release() metoder, som du kommer att anropa när spelaren trycker eller släpper en tangent.
defon_key_press(själv, nyckel, modifierare):
om nyckel == arkad.nyckel. VÄNSTER:
self.player.change_x = -5
elif nyckel == arkad.nyckel. HÖGER:
self.player.change_x = 5
elif nyckel == arkad.nyckel. UPP:
self.player.change_y = 5
elif nyckel == arkad.nyckel. NER:
self.player.change_y = -5
defon_key_release(själv, nyckel, modifierare):
om nyckel == arkad.nyckel. VÄNSTER eller nyckel == arkad.nyckel. HÖGER:
self.player.change_x = 0
elif nyckel == arkad.nyckel. UPP eller nyckel == arkad.nyckel. NER:
self.player.change_y = 0
När du lägger till spelarrörelse med tangentbordsingångar kan du anpassa rörelsehastigheten genom att ändra värdet som tilldelas self.player.change_x och self.player.change_y. Du kan också lägga till villkor för att begränsa spelarrörelser på spelskärmen.
Lägga till spelarrörelse med musingång
Förutom tangentbordsingångar kan du även lägga till spelarrörelser med hjälp av musingång. Definiera on_mouse_motion() metod, som körs när spelaren flyttar musen. Inuti metoden ställer du in center_x och center_y egenskaper för spelarobjektet till den aktuella muspositionen.
defon_mouse_motion(själv, x, y, dx, dy):
self.player.center_x = x
self.player.center_y = y
När du lägger till spelarrörelse med musinmatning kan du anpassa spelarobjektets beteende när användaren klickar eller håller ner musen genom att definiera metoder som t.ex. on_mouse_press() eller on_mouse_drag(). Du kan använda dessa metoder för att utlösa spelaråtgärder som att skjuta eller hoppa, beroende på spelmekaniken.
Vi introducerar ytterligare funktioner
Du kan ytterligare förbättra spelarens rörelse genom att ta hänsyn till acceleration och retardation. Ändra on_key_press() metod för att subtrahera eller lägga till ändra_x och ändra_y egenskaper hos spelarobjektet, beroende på rörelseriktningen. Ställ också in ändra_x och ändra_y egenskaper till 0 i on_key_release() metod som tidigare.
defon_key_press(själv, nyckel, modifierare):
om nyckel == arkad.nyckel. VÄNSTER:
self.player.change_x -= 5
elif nyckel == arkad.nyckel. HÖGER:
self.player.change_x += 5
elif nyckel == arkad.nyckel. UPP:
self.player.change_y += 5
elif nyckel == arkad.nyckel. NER:
self.player.change_y -= 5
defon_key_release(själv, nyckel, modifierare):
om nyckel == arkad.nyckel. VÄNSTER eller nyckel == arkad.nyckel. HÖGER:
self.player.change_x = 0
elif nyckel == arkad.nyckel. UPP eller nyckel == arkad.nyckel. NER:
self.player.change_y = 0
Precis som PyGame kan du också lägg till kollisionsdetektering mellan spelarobjektet och andra spelobjekt, såsom fiender eller hinder i arkadspel. Du kan uppnå detta genom att lägga till följande kod till uppdatering() metod för Mitt spel klass:
defuppdatering(själv, delta_tid):
self.player.update()# Kontrollera om det finns kollisioner mellan spelare och andra spelobjekt
kollisioner = arcade.check_for_collision_with_list (self.player, self.enemy_list)
för kollision i kollisioner:
collision.kill()
Gör engagerande spel med interaktiv spelarrörelse
Interaktiva spelarrörelser är en avgörande aspekt av alla engagerande spel. Användningen av olika typer av rörelsemekanik som att hoppa, springa, flyga och glida kan lägga till variation och spänning till spelet.
Att ge spelare kontroll över sina rörelser ger en känsla av agency och fördjupning, vilket kan leda till en mer tillfredsställande spelupplevelse.