De fleste platformspil bruger en eller anden form for spring, med variationer, herunder dobbeltspring og spring med variabel højde. Opdag teknikkerne bag disse bevægelser.
Springmekanik spiller en afgørende rolle i at forbedre gameplay-oplevelsen af et platformspil. Ved at implementere forskellige springmekanikker med Pythons Arcade Library kan du tilføje dybde og spænding til dine spil.
Arcade-biblioteket giver en intuitiv og nem at bruge ramme til at skabe spil, hvilket gør det til et ideelt valg til at skabe din platformer.
Opret et simpelt spil
Inden start, installer pip på din enhed og brug denne kommando til at installere arkade modul:
pip installere arkade
For at udforske, hvordan springmekanik fungerer, skal du starte med at skabe et simpelt spil, hvor spilleren kan bevæge sig til venstre og højre med tyngdekraften og en statisk platform.
Koden brugt i denne artikel er tilgængelig i denne GitHub-depot og er gratis for dig at bruge under MIT-licensen.
I spillet vil spilleren kollidere med platformen og stå oven på den. Opret en ny fil med navnet
simple-game.py og tilføj nedenstående kode:importere arkade
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
PLAYER_RADIUS = 20
PLATFORM_WIDTH = 200
PLATFORM_HEIGHT = 20
GRAVITY = 0.5
blå = arkade.farve. BLÅ
grøn = arkade.farve. GRØNklasseGameWindow(arkade. Vindue):
def__i det__(selv):
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "Hoppemekanik")
self.player_x = SCREEN_WIDTH // 2
self.player_y = SCREEN_HEIGHT // 2
self.player_dy = 0
self.platform_x = SCREEN_WIDTH // 2
self.platform_y = SCREEN_HEIGHT // 4defon_draw(selv):
arcade.start_render()arcade.draw_circle_filled (self.player_x, self.player_y,
PLAYER_RADIUS, blå)arcade.draw_rectangle_filled (self.platform_x, self.platform_y,
PLATFORM_WIDTH, PLATFORM_HEIGHT, grøn)defon_update(selv, delta_tid):
self.player_dy -= GRAVITY
self.player_y += self.player_dy
dist = PLAYER_RADIUS + self.platform_y + PLATFORM_HEIGHT / 2hvis self.player_y < dist:
self.player_y = dist
self.player_dy = 0
spil = GameWindow()
arcade.run()
Når du kører programmet, vil du se afspillerobjektet hurtigt falde ned på platformen og derefter blive hvilende oven på det.
Tilføjelse af en simpel hoppefunktion
Tilføj nu en simpel springfunktion til spillet. Tjek kollisionen mellem afspilleren og platformen og udløs hoppehandlingen, når spilleren trykker på pil op-tasten. For at opnå dette skal du oprette en ny fil med navnet jump.py og koden med nedenstående opdateringer:
klasseGameWindow(arkade. Vindue):
def__i det__(selv):
# ...defon_key_press(selv, nøgle, modifikatorer):
on_ground = PLAYER_RADIUS + self.platform_y + PLATFORM_HEIGHT / 2hvis nøgle == arkade.nøgle. OP og self.player_y == on_ground:
self.player_dy = 10
defon_update(selv, delta_tid):
self.player_dy -= GRAVITY
self.player_y += self.player_dy
dist = PLAYER_RADIUS + self.platform_y + PLATFORM_HEIGHT / 2
hvis self.player_y < dist:
self.player_y = dist
self.player_dy = 0
self.jump_count = 0
Tilføjelse af en dobbeltspringsfunktion
For at tilføje en dobbeltspringsfunktion skal du udvide den eksisterende springlogik. Når spilleren er på platformen og trykker på pil op-tasten for første gang, udfører de et almindeligt hop. Men hvis de trykker på pil op igen, mens de er i luften, vil spilleren udføre et dobbeltspring.
Opret en ny fil med navnet dobbelt-jump.py og koden med nedenstående opdateringer:
klasseGameWindow(arkade. Vindue):
def__i det__(selv):
self.jump_count = 0# Spor antallet af hopdefon_key_press(selv, nøgle, modifikatorer):
on_ground = PLAYER_RADIUS + self.platform_y + PLATFORM_HEIGHT / 2
hvis nøgle == arkade.nøgle. OP:
hvis self.player_y == on_ground eller self.jump_count < 2:
self.player_dy = 10
self.jump_count += 1
Inklusiv yderligere funktioner
Udover de enkle og dobbelte spring, er der mange funktioner, du kan tilføje for at forbedre springmekanikken i dit spil.
Implementering af variabel springhøjde
At tillade spilleren at kontrollere højden af deres hop baseret på, hvor længe de holder springknappen nede, kan tilføje mere kontrol og strategi til gameplayet. Her er et eksempel på, hvordan du kan implementere variabel springhøjde. Opret en ny fil med navnet variabel-jump.py og koden med nedenstående opdateringer:
GRAVITY = 0.5
JUMP_POWER_INCREMENT = 0.2
MAX_JUMP_POWER = 100klasseGameWindow(arkade. Vindue):
def__i det__(selv):
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "Hoppemekanik")
self.jump_pressed = Falsk
self.jump_power = 0defon_key_press(selv, nøgle, modifikatorer):
on_ground = PLAYER_RADIUS + self.platform_y + PLATFORM_HEIGHT / 2hvis nøgle == arkade.nøgle. OP og self.player_y == on_ground:
self.jump_pressed = Rigtigtdefon_key_release(selv, nøgle, modifikatorer):
hvis nøgle == arkade.nøgle. OP:
self.jump_pressed = Falskdefupdate_jump_power(selv):
# Øg springstyrken, mens springknappen holdes nede
hvis self.jump_pressed:
self.jump_power += JUMP_POWER_INCREMENThvis self.jump_power > MAX_JUMP_POWER:
self.jump_power = MAX_JUMP_POWER
andet:
hvis self.jump_power > 0:
self.jump_power -= 1defon_update(selv, delta_tid):
self.player_dy -= GRAVITY
dist = PLAYER_RADIUS + self.platform_y + PLATFORM_HEIGHT / 2hvis self.player_y == dist og self.jump_power > 0:
self.player_dy = self.jump_power
self.player_y += self.player_dy
self.update_jump_power()
Implementering af Air Dash-funktion
Tilføjelse af en air dash-mekaniker kan give spilleren yderligere mobilitetsmuligheder, mens han er i luften. Opret en ny fil med navnet air-dash.py og koden med nedenstående opdateringer:
AIR_DASH_DISTANCE = 100
MAX_AIR_DASHES = 2klasseGameWindow(arkade. Vindue):
def__i det__(selv):
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "Hoppemekanik")
self.on_ground = Falsk
self.air_dashes = 0
self.can_air_dash = Rigtigtdefon_key_press(selv, nøgle, modifikatorer):
hvis nøgle == arkade.nøgle. OP og self.on_ground:
self.player_dy = 10
elif nøgle == arkade.nøgle. OP og \
self.air_dashes < MAX_AIR_DASHES og \
self.can_air_dash:
self.player_dx = AIR_DASH_DISTANCE
self.air_dashes += 1
self.can_air_dash = Falskdefon_update(selv, delta_tid):
self.player_dy -= GRAVITY
self.player_y += self.player_dydist = PLAYER_RADIUS + self.platform_y + PLATFORM_HEIGHT / 2
hvis self.player_y <= dist:
self.player_y = dist
self.player_dy = 0
self.on_ground = Rigtigt
andet:
self.on_ground = Falskself.player_x += self.player_dx
hvis self.player_x < PLAYER_RADIUS:
self.player_x = PLAYER_RADIUS
self.player_dx = 0
elif self.player_x > SCREEN_WIDTH - PLAYER_RADIUS:
self.player_x = SCREEN_WIDTH - PLAYER_RADIUS
self.player_dx = 0
hvis self.on_ground:
self.air_dashes = 0
self.can_air_dash = Rigtigt
Når du udfører luftdysten, vil din spillerkarakter bevæge sig langt væk fra platformen:
Bedste praksis for springmekanik
Implementering af springmekanik i et spil kræver nøje overvejelse for at sikre en jævn og fornøjelig spiloplevelse. Her er nogle bedste fremgangsmåder at huske på:
Balance Jump Højde og Varighed
For at bevare en følelse af realisme og spilvanskeligheder er det vigtigt at balancere springhøjden og varigheden. Et hop, der er for højt eller for kort, kan påvirke gameplayet negativt. Eksperimenter med forskellige springhøjder og varigheder for at finde den rigtige balance til dit spil.
Overvej spillets fysik, karakterevner og overordnede niveaudesign, når du bestemmer den passende springmekanik.
Giv visuel og lydfeedback
Visuel og lydfeedback er afgørende for at få hop til at føles responsive og tilfredsstillende. Brug animationer eller partikeleffekter til at skildre spillerens hoppebevægelse og landing.
Overvej desuden tilføje lydeffekter eller baggrundsmusik der forbedrer springoplevelsen. Disse visuelle og lydsignaler bidrager til spillernes fordybelse og engagement.
Finjuster kollisionsdetektion
Nøjagtig kollisionsdetektion mellem afspilleren og platformene er afgørende for præcis og pålidelig springmekanik. Sørg for, at kollisionsdetektionsalgoritmen er robust og korrekt håndterer forskellige scenarier, såsom at lande på en platform, kollidere med forhindringer eller glide langs vægge.
Test og gentag din kollisionsdetekteringskode for at eliminere eventuelle fejl eller uoverensstemmelser, der kan påvirke springmekanikken.
Gør spil sjovere med Jumping Mechanics
Tilføjelsen af springmekanik kan i høj grad øge engagementet og nydelsen af et spil. Det åbner op for nye muligheder for niveaudesign, puslespil og udfordrende forhindringer. Ved at implementere forskellige springmekanikker i Pythons Arcade Game Library kan du skabe fængslende platformspil, der holder spillerne underholdt i timevis.
Husk, at eksperimentere med forskellige springmekanikker og inkorporering af unikke funktioner kan adskille dit spil og gøre det til en fordybende og mindeværdig oplevelse for spillere.