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ÖLDosztá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 // 4defon_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 / 2ha 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 / 2ha 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átdefon_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 = 100osztályGameWindow(árkád. Ablak):
def__benne__(maga):
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "Ugrás mechanika")
self.jump_pressed = Hamis
self.jump_power = 0defon_key_press(én, kulcs, módosítók):
on_ground = PLAYER_RADIUS + self.platform_y + PLATFORM_HEIGHT / 2ha kulcs == arcade.key. FEL és self.player_y == on_ground:
self.jump_pressed = Igazdefon_key_release(én, kulcs, módosítók):
ha kulcs == arcade.key. FEL:
self.jump_pressed = Hamisdefupdate_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_INCREMENTha self.jump_power > MAX_JUMP_POWER:
self.jump_power = MAX_JUMP_POWER
más:
ha self.jump_power > 0:
self.jump_power -= 1defon_update(self, delta_time):
self.player_dy -= GRAVITÁCIÓ
dist = PLAYER_RADIUS + self.platform_y + PLATFORM_HEIGHT / 2ha 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 = 2osztá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 = Igazdefon_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 = Hamisdefon_update(self, delta_time):
self.player_dy -= GRAVITÁCIÓ
self.player_y += self.player_dydist = 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 = Hamisself.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.