A legtöbb platformjáték valamilyen típusú ugrást használ, olyan változatokkal, mint a dupla ugrás és a változó magasságú ugrás. Fedezze fel e mozdulatok mögött rejlő technikákat.

Az ugrásmechanika döntő szerepet játszik a platformer játék játékélményének javításában. A Python Arcade Library különféle ugrásmechanikai megoldásaival mélységet és izgalmat adhat a játékaihoz.

Az Arcade könyvtár intuitív és könnyen használható keretet biztosít a játékok létrehozásához, így ideális választás a platformer létrehozásához.

Hozzon létre egy egyszerű játékot

Kezdés előtt, telepítse a pip-t a készülékére és ezzel a paranccsal telepítse a árkád modul:

pip install arcade

Az ugrásmechanika működésének felfedezéséhez kezdje el egy egyszerű játék létrehozásával, amelyben a játékos balra és jobbra mozoghat a gravitáció és egy statikus platform segítségével.

A cikkben használt kód itt érhető el GitHub adattár és az MIT licence alapján ingyenesen használható.

A játékban a játékos ütközik a platformmal, és annak tetejére áll. Hozzon létre egy új nevű fájlt simple-game.py és add hozzá az alábbi kódot:

import árkád

SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
PLAYER_RADIUS = 20
PLATFORM_WIDTH = 200
PLATFORM_HEIGHT = 20
GRAVITÁCIÓ = 0.5
kék = arcade.color. KÉK
zöld = arcade.color. ZÖLD

osztályGameWindow(árkád. Ablak):
def__benne__(maga):
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "Ugrás mechanika")
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 // 4

defon_draw(maga):
arcade.start_render()

arcade.draw_circle_filled (self.player_x, self.player_y,
PLAYER_RADIUS, kék)

arcade.draw_rectangle_filled (self.platform_x, self.platform_y,
PLATFORM_WIDTH, PLATFORM_HEIGHT, zöld)

defon_update(self, delta_time):
self.player_dy -= GRAVITÁCIÓ
self.player_y += self.player_dy
dist = PLAYER_RADIUS + self.platform_y + PLATFORM_HEIGHT / 2

ha self.player_y < dist:
self.player_y = dist
self.player_dy = 0

játék = GameWindow()
arcade.run()

A program futtatásakor látni fogja, hogy a játékos objektum gyorsan leesik a platformra, majd a tetején marad.

Egyszerű ugrás funkció hozzáadása

Most adjunk hozzá egy egyszerű ugrás funkciót a játékhoz. Ellenőrizze a lejátszó és a platform közötti ütközést és elindítja az ugrást, amikor a játékos megnyomja a felfelé mutató nyilat. Ennek eléréséhez hozzon létre egy új nevű fájlt jump.py és a kód az alábbi frissítésekkel:

osztályGameWindow(árkád. Ablak):
def__benne__(maga):
# ...

defon_key_press(én, kulcs, módosítók):
on_ground = PLAYER_RADIUS + self.platform_y + PLATFORM_HEIGHT / 2

ha kulcs == arcade.key. FEL és self.player_y == on_ground:
self.player_dy = 10

defon_update(self, delta_time):
self.player_dy -= GRAVITÁCIÓ
self.player_y += self.player_dy
dist = PLAYER_RADIUS + self.platform_y + PLATFORM_HEIGHT / 2

ha self.player_y < dist:
self.player_y = dist
self.player_dy = 0
self.jump_count = 0

Dupla ugrás funkció hozzáadása

Dupla ugrás funkció hozzáadásához bővítse ki a meglévő ugrási logikát. Amikor a játékos a platformon van, és először nyomja meg a felfelé mutató nyilat, szabályos ugrást hajt végre. Ha azonban ismét megnyomják a felfelé mutató nyilat a levegőben, a játékos dupla ugrást hajt végre.

Hozzon létre egy új nevű fájlt dupla ugrás.py és a kód az alábbi frissítésekkel:

osztályGameWindow(árkád. Ablak):
def__benne__(maga):
self.jump_count = 0# Kövesse nyomon az ugrások számát

defon_key_press(én, kulcs, módosítók):
on_ground = PLAYER_RADIUS + self.platform_y + PLATFORM_HEIGHT / 2

ha kulcs == arcade.key. FEL:
ha self.player_y == on_ground vagy self.jump_count < 2:
self.player_dy = 10
self.jump_count += 1

Kiegészítő funkciókkal együtt

Az egyszerű és a dupla ugrásokon kívül számos olyan funkciót is hozzáadhat, amellyel javíthatja játéka ugrási mechanikáját.

Változó ugrási magasság megvalósítása

Ha lehetővé teszi a játékos számára, hogy az ugrások magasságát az alapján szabályozza, hogy mennyi ideig tartja lenyomva az ugrás gombot, még több irányítást és stratégiát adhat a játékmenethez. Íme egy példa arra, hogyan valósíthat meg változó ugrási magasságot. Hozzon létre egy új nevű fájlt variable-jump.py és a kód az alábbi frissítésekkel:

GRAVITÁCIÓ = 0.5
JUMP_POWER_INCREMENT = 0.2
MAX_JUMP_POWER = 100

osztályGameWindow(árkád. Ablak):
def__benne__(maga):
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "Ugrás mechanika")
self.jump_pressed = Hamis
self.jump_power = 0

defon_key_press(én, kulcs, módosítók):
on_ground = PLAYER_RADIUS + self.platform_y + PLATFORM_HEIGHT / 2

ha kulcs == arcade.key. FEL és self.player_y == on_ground:
self.jump_pressed = Igaz

defon_key_release(én, kulcs, módosítók):
ha kulcs == arcade.key. FEL:
self.jump_pressed = Hamis

defupdate_jump_power(maga):
# Növelje az ugrási teljesítményt, miközben lenyomva tartja az ugrás gombot
ha self.jump_pressed:
self.jump_power += JUMP_POWER_INCREMENT

ha self.jump_power > MAX_JUMP_POWER:
self.jump_power = MAX_JUMP_POWER
más:
ha self.jump_power > 0:
self.jump_power -= 1

defon_update(self, delta_time):
self.player_dy -= GRAVITÁCIÓ
dist = PLAYER_RADIUS + self.platform_y + PLATFORM_HEIGHT / 2

ha self.player_y == ker és self.jump_power > 0:
self.player_dy = self.jump_power

self.player_y += self.player_dy
self.update_jump_power()

Az Air Dash funkció megvalósítása

A légiműszerelő felszerelése további mobilitási lehetőségeket biztosíthat a játékosnak a levegőben. Hozzon létre egy új nevű fájlt air-dash.py és a kód az alábbi frissítésekkel:

AIR_DASH_DISTANCE = 100
MAX_AIR_DASHES = 2

osztályGameWindow(árkád. Ablak):
def__benne__(maga):
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "Ugrás mechanika")
self.on_ground = Hamis
self.air_dashes = 0
self.can_air_dash = Igaz

defon_key_press(én, kulcs, módosítók):
ha kulcs == arcade.key. FEL és self.on_ground:
self.player_dy = 10
elif kulcs == arcade.key. FEL és \
self.air_dashes < MAX_AIR_DASHES és \
self.can_air_dash:
self.player_dx = AIR_DASH_DISTANCE
self.air_dashes += 1
self.can_air_dash = Hamis

defon_update(self, delta_time):
self.player_dy -= GRAVITÁCIÓ
self.player_y += self.player_dy

dist = PLAYER_RADIUS + self.platform_y + PLATFORM_HEIGHT / 2

ha self.player_y <= dist:
self.player_y = dist
self.player_dy = 0
self.on_ground = Igaz
más:
self.on_ground = Hamis

self.player_x += self.player_dx

ha 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

ha self.on_ground:
self.air_dashes = 0
self.can_air_dash = Igaz

Amikor végrehajtod a légi csapást, a játékos karaktered messze el fog távolodni a platformtól:

Az ugrásmechanika legjobb gyakorlatai

Az ugrásmechanika megvalósítása a játékban alapos megfontolást igényel a gördülékeny és élvezetes játékélmény érdekében. Íme néhány bevált gyakorlat, amelyet szem előtt kell tartani:

Egyensúly ugrás magassága és időtartama

A realizmus és a játék nehézségi érzetének megőrzése érdekében fontos egyensúlyt teremteni az ugrás magassága és időtartama között. A túl magas vagy túl rövid ugrás negatívan befolyásolhatja a játékmenetet. Kísérletezzen különböző ugrási magasságokkal és időtartamokkal, hogy megtalálja a játékához megfelelő egyensúlyt.

A megfelelő ugrási mechanika meghatározásakor vegye figyelembe a játék fizikáját, a karakter képességeit és az általános szinttervet.

Adjon vizuális és audio visszajelzést

A vizuális és audio visszajelzés döntő fontosságú ahhoz, hogy az ugrások érzékeny és kielégítőek legyenek. Használjon animációkat vagy részecskeeffektusokat a játékos ugró mozgásának és leszállásának ábrázolásához.

Ezenkívül fontolja meg hanghatások vagy háttérzene hozzáadása ami fokozza az ugrás élményét. Ezek a vizuális és hangjelzések hozzájárulnak a játékosok elmerüléséhez és elköteleződéséhez.

Ütközésérzékelés finomhangolása

A lejátszó és a platformok közötti ütközések pontos észlelése elengedhetetlen a precíz és megbízható ugrásmechanikához. Győződjön meg arról, hogy az ütközésészlelő algoritmus robusztus, és megfelelően kezeli a különböző forgatókönyveket, mint például a platformra való leszállás, az akadályokkal való ütközés vagy a falak mentén való elcsúszás.

Tesztelje és iterálja az ütközésészlelési kódot, hogy kiküszöbölje az ugrás mechanikáját befolyásoló hibákat vagy következetlenségeket.

Tedd szórakoztatóbbá a játékokat az ugrómechanikával

Az ugrás mechanikája nagymértékben fokozhatja a játék elköteleződését és élvezetét. Új lehetőségeket nyit meg a szinttervezés, a rejtvények és a kihívást jelentő akadályok számára. A Python Arcade Game Library különböző ugrásmechanikai megoldásaival lenyűgöző platformer játékokat hozhat létre, amelyek órákon át szórakoztatják a játékosokat.

Ne feledje, hogy a különböző ugrási mechanikákkal való kísérletezés és az egyedi funkciók beépítése megkülönböztetheti játékát, és magával ragadó és emlékezetes élménnyé teheti a játékosok számára.