Већина платформских игара користи неку врсту скока, са варијацијама укључујући двоструки скок и скок са променљивом висином. Откријте технике иза ових потеза.

Механика скакања игра кључну улогу у побољшању искуства играња платформерске игре. Имплементацијом различитих механика скакања са Питхон-овом Аркадном библиотеком, можете додати дубину и узбуђење својим играма.

Арцаде библиотека пружа интуитиван и једноставан оквир за креирање игара, што је чини идеалним избором за креирање вашег платформера.

Направите једноставну игру

Пре почетка, инсталирајте пип на свој уређај и користите ову наредбу да инсталирате арцаде модул:

пип инсталл арцаде

Да бисте истражили како функционише механика скакања, почните креирањем једноставне игре у којој играч може да се креће лево и десно уз гравитацију и статичну платформу.

Код који се користи у овом чланку доступан је у овом ГитХуб спремиште и бесплатан је за коришћење под МИТ лиценцом.

У игри, играч ће се сударити са платформом и стати на њу. Креирајте нову датотеку под називом симпле-гаме.пи и додајте код испод:

увоз арцаде

СЦРЕЕН_ВИДТХ = 800
СЦРЕЕН_ХЕИГХТ = 600
ПЛАИЕР_РАДИУС = 20
ПЛАТФОРМ_ВИДТХ = 200
ПЛАТФОРМ_ХЕИГХТ = 20
ГРАВИТАЦИЈА = 0.5
плава = аркада.боја. ПЛАВИ
зелена = аркада.боја. ЗЕЛЕН

класаГамеВиндов(аркада. прозор):
деф__у томе__(сам):
супер().__инит__(СЦРЕЕН_ВИДТХ, СЦРЕЕН_ХЕИГХТ, "Механика скакања")
селф.плаиер_к = СЦРЕЕН_ВИДТХ // 2
селф.плаиер_и = СЦРЕЕН_ХЕИГХТ // 2
селф.плаиер_ди = 0
селф.платформ_к = СЦРЕЕН_ВИДТХ // 2
селф.платформ_и = СЦРЕЕН_ХЕИГХТ // 4

дефон_драв(сам):
арцаде.старт_рендер()

арцаде.драв_цирцле_филлед (селф.плаиер_к, селф.плаиер_и,
ПЛАИЕР_РАДИУС, плава)

арцаде.драв_рецтангле_филлед (селф.платформ_к, селф.платформ_и,
ПЛАТФОРМ_ВИДТХ, ПЛАТФОРМ_ХЕИГХТ, зелена)

дефон_упдате(селф, делта_тиме):
селф.плаиер_ди -= ГРАВИТАЦИЈА
селф.плаиер_и += селф.плаиер_ди
дист = ПЛАИЕР_РАДИУС + селф.платформ_и + ПЛАТФОРМ_ХЕИГХТ / 2

ако селф.плаиер_и < дист:
селф.плаиер_и = дист
селф.плаиер_ди = 0

игра = ГамеВиндов()
арцаде.рун()

Када покренете програм, видећете да се објекат играча брзо спушта на платформу, а затим остаје да лежи на њему.

Додавање функције једноставног скока

Сада додајте једноставну функцију скока у игру. Проверите колизију између играча и платформе и активирајте акцију скакања када играч притисне тастер са стрелицом нагоре. Да бисте то постигли, креирајте нову датотеку под називом јумп.пи и код са ажурирањима у наставку:

класаГамеВиндов(аркада. прозор):
деф__у томе__(сам):
# ...

дефон_кеи_пресс(селф, кључ, модификатори):
он_гроунд = ПЛАИЕР_РАДИУС + селф.платформ_и + ПЛАТФОРМ_ХЕИГХТ / 2

ако кључ == арцаде.кеи. УП и селф.плаиер_и == он_гроунд:
селф.плаиер_ди = 10

дефон_упдате(селф, делта_тиме):
селф.плаиер_ди -= ГРАВИТАЦИЈА
селф.плаиер_и += селф.плаиер_ди
дист = ПЛАИЕР_РАДИУС + селф.платформ_и + ПЛАТФОРМ_ХЕИГХТ / 2

ако селф.плаиер_и < дист:
селф.плаиер_и = дист
селф.плаиер_ди = 0
селф.јумп_цоунт = 0

Додавање функције двоструког скока

Да бисте додали функцију двоструког скока, проширите постојећу логику скока. Када је играч на платформи и први пут притисне тастер са стрелицом нагоре, извршиће обичан скок. Међутим, ако поново притисну тастер са стрелицом нагоре док је у ваздуху, играч ће извршити двоструки скок.

Креирајте нову датотеку под називом доубле-јумп.пи и код са ажурирањима у наставку:

класаГамеВиндов(аркада. прозор):
деф__у томе__(сам):
селф.јумп_цоунт = 0# Пратите број скокова

дефон_кеи_пресс(селф, кључ, модификатори):
он_гроунд = ПЛАИЕР_РАДИУС + селф.платформ_и + ПЛАТФОРМ_ХЕИГХТ / 2

ако кључ == арцаде.кеи. ГОРЕ:
ако селф.плаиер_и == он_гроунд или селф.јумп_цоунт < 2:
селф.плаиер_ди = 10
селф.јумп_цоунт += 1

Укључујући додатне функције

Осим једноставних и дуплих скокова, постоје многе функције које можете додати да побољшате механику скакања ваше игре.

Имплементација променљиве висине скока

Омогућавање играчу да контролише висину својих скокова на основу тога колико дуго држи дугме за скок може додати више контроле и стратегије игри. Ево примера како можете да примените променљиву висину скока. Креирајте нову датотеку под називом променљива-скок.пи и код са ажурирањима у наставку:

ГРАВИТАЦИЈА = 0.5
ЈУМП_ПОВЕР_ИНЦРЕМЕНТ = 0.2
МАКС_ЈУМП_ПОВЕР = 100

класаГамеВиндов(аркада. прозор):
деф__у томе__(сам):
супер().__инит__(СЦРЕЕН_ВИДТХ, СЦРЕЕН_ХЕИГХТ, "Механика скакања")
селф.јумп_прессед = Фалсе
селф.јумп_повер = 0

дефон_кеи_пресс(селф, кључ, модификатори):
он_гроунд = ПЛАИЕР_РАДИУС + селф.платформ_и + ПЛАТФОРМ_ХЕИГХТ / 2

ако кључ == арцаде.кеи. УП и селф.плаиер_и == он_гроунд:
селф.јумп_прессед = Истина

дефон_кеи_релеасе(селф, кључ, модификатори):
ако кључ == арцаде.кеи. ГОРЕ:
селф.јумп_прессед = Фалсе

дефупдате_јумп_повер(сам):
# Повећајте снагу скока док се држи дугме за скок
ако селф.јумп_прессед:
селф.јумп_повер += ЈУМП_ПОВЕР_ИНЦРЕМЕНТ

ако селф.јумп_повер > МАКС_ЈУМП_ПОВЕР:
селф.јумп_повер = МАКС_ЈУМП_ПОВЕР
друго:
ако селф.јумп_повер > 0:
селф.јумп_повер -= 1

дефон_упдате(селф, делта_тиме):
селф.плаиер_ди -= ГРАВИТАЦИЈА
дист = ПЛАИЕР_РАДИУС + селф.платформ_и + ПЛАТФОРМ_ХЕИГХТ / 2

ако селф.плаиер_и == дист и селф.јумп_повер > 0:
селф.плаиер_ди = селф.јумп_повер

селф.плаиер_и += селф.плаиер_ди
селф.упдате_јумп_повер()

Имплементација функције Аир Дасх

Додавање механичара за ваздушну таблу може дати играчу додатне могућности мобилности док је у ваздуху. Креирајте нову датотеку под називом аир-дасх.пи и код са ажурирањима у наставку:

АИР_ДАСХ_ДИСТАНЦЕ = 100
МАКС_АИР_ДАСХЕС = 2

класаГамеВиндов(аркада. прозор):
деф__у томе__(сам):
супер().__инит__(СЦРЕЕН_ВИДТХ, СЦРЕЕН_ХЕИГХТ, "Механика скакања")
селф.он_гроунд = Фалсе
селф.аир_дасхес = 0
селф.цан_аир_дасх = Истина

дефон_кеи_пресс(селф, кључ, модификатори):
ако кључ == арцаде.кеи. УП и селф.он_гроунд:
селф.плаиер_ди = 10
елиф кључ == арцаде.кеи. УП и \
селф.аир_дасхес < МАКС_АИР_ДАСХЕС и \
селф.цан_аир_дасх:
селф.плаиер_дк = АИР_ДАСХ_ДИСТАНЦЕ
селф.аир_дасхес += 1
селф.цан_аир_дасх = Фалсе

дефон_упдате(селф, делта_тиме):
селф.плаиер_ди -= ГРАВИТАЦИЈА
селф.плаиер_и += селф.плаиер_ди

дист = ПЛАИЕР_РАДИУС + селф.платформ_и + ПЛАТФОРМ_ХЕИГХТ / 2

ако селф.плаиер_и <= дист:
селф.плаиер_и = дист
селф.плаиер_ди = 0
селф.он_гроунд = Истина
друго:
селф.он_гроунд = Фалсе

селф.плаиер_к += селф.плаиер_дк

ако селф.плаиер_к < ПЛАИЕР_РАДИУС:
селф.плаиер_к = ПЛАИЕР_РАДИУС
селф.плаиер_дк = 0
елиф селф.плаиер_к > СЦРЕЕН_ВИДТХ - ПЛАИЕР_РАДИУС:
селф.плаиер_к = СЦРЕЕН_ВИДТХ - ПЛАИЕР_РАДИУС
селф.плаиер_дк = 0

ако селф.он_гроунд:
селф.аир_дасхес = 0
селф.цан_аир_дасх = Истина

Када изведете ваздушни удар, ваш лик играча ће се удаљити од платформе:

Најбоље праксе за механику скакања

Примена механике скакања у игри захтева пажљиво разматрање како би се обезбедило глатко и пријатно искуство играња. Ево неколико најбољих пракси које треба имати на уму:

Уравнотежите висину и трајање скока

Да бисте задржали осећај реализма и тежине игре, важно је избалансирати висину и трајање скока. Превисок или прекратак скок може негативно утицати на игру. Експериментишите са различитим висинама и трајањем скока да бисте пронашли праву равнотежу за своју игру.

Узмите у обзир физику игре, способности карактера и укупни дизајн нивоа када одређујете одговарајућу механику скока.

Обезбедите визуелне и аудио повратне информације

Визуелна и аудио повратна информација је кључна за стварање осећаја одзива и задовољства при скоковима. Користите анимације или ефекте честица да бисте приказали играчево скакање и слетање.

Поред тога, размотрите додавање звучних ефеката или позадинске музике што побољшава искуство скакања. Ови визуелни и звучни знаци доприносе уроњењу и ангажовању играча.

Фино подешавање детекције судара

Прецизна детекција судара између играча и платформе је неопходна за прецизну и поуздану механику скакања. Уверите се да је алгоритам за детекцију судара робустан и да правилно обрађује различите сценарије, као што је слетање на платформу, судар са препрекама или клизање дуж зидова.

Тестирајте и поновите свој код за откривање судара да бисте елиминисали све грешке или недоследности које могу утицати на механику скакања.

Учините игре забавнијим помоћу механике скакања

Додатак механике скакања може знатно побољшати ангажовање и уживање у игри. Отвара нове могућности за дизајн нивоа, загонетке и изазовне препреке. Имплементацијом различитих механика скокова у Питхоновој библиотеци аркадних игара, можете креирати задивљујуће платформске игре које ће играче забављати сатима.

Запамтите, експериментисање са различитим механикама скокова и укључивање јединствених функција могу да одвоје вашу игру и да је играчима учине импресивним и незаборавним искуством.