Повечето платформени игри използват някакъв вид скок, с вариации, включително двоен скок и скок с променлива височина. Открийте техниките зад тези движения.
Механиката на скачането играе решаваща роля за подобряване на игровото изживяване на платформинг игра. Като внедрите различни механики за скачане с Arcade Library на Python, можете да добавите дълбочина и вълнение към вашите игри.
Библиотеката Arcade предоставя интуитивна и лесна за използване рамка за създаване на игри, което я прави идеален избор за създаване на вашия платформинг.
Създайте проста игра
Преди да започнете, инсталирайте pip на вашето устройство и използвайте тази команда, за да инсталирате аркада модул:
pip инсталирайте аркада
За да проучите как работи механиката за скачане, започнете със създаване на проста игра, в която играчът може да се движи наляво и надясно с гравитация и статична платформа.
Кодът, използван в тази статия, е достъпен в това GitHub хранилище и е безплатен за използване под лиценза на MIT.
В играта играчът ще се сблъска с платформата и ще застане върху нея. Създайте нов файл с име
проста-игра.py и добавете кода по-долу:импортиране аркада
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
PLAYER_RADIUS = 20
PLATFORM_WIDTH = 200
ПЛАТФОРМА_ВИСОЧИНА = 20
ГРАВИТАЦИЯ = 0.5
синьо = arcade.color. СИН
зелено = arcade.color. ЗЕЛЕНОкласGameWindow(аркадна. прозорец):
деф__в него__(себе си):
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "Механика на скока")
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дефon_draw(себе си):
arcade.start_render()arcade.draw_circle_filled (self.player_x, self.player_y,
PLAYER_RADIUS, синьо)arcade.draw_rectangle_filled (self.platform_x, self.platform_y,
PLATFORM_WIDTH, PLATFORM_HEIGHT, зелено)дефon_update(самостоятелно, делта_време):
self.player_dy -= ГРАВИТАЦИЯ
self.player_y += self.player_dy
dist = PLAYER_RADIUS + self.platform_y + PLATFORM_HEIGHT / 2ако self.player_y < dist:
self.player_y = dist
self.player_dy = 0
игра = GameWindow()
arcade.run()
Когато стартирате програмата, ще видите как обектът на играча бързо пада върху платформата, след което остава да почива върху нея.
Добавяне на функция за прост скок
Сега добавете проста функция за скок към играта. Проверете сблъсъка между играча и платформата и задействайте действието за скачане, когато играчът натисне клавиша със стрелка нагоре. За да постигнете това, създайте нов файл с име jump.py и кода със следните актуализации:
класGameWindow(аркадна. прозорец):
деф__в него__(себе си):
# ...дефon_key_press(самостоятелно, ключ, модификатори):
on_ground = PLAYER_RADIUS + self.platform_y + PLATFORM_HEIGHT / 2ако ключ == arcade.key. НАГОРЕ и self.player_y == on_ground:
self.player_dy = 10
дефon_update(самостоятелно, делта_време):
self.player_dy -= ГРАВИТАЦИЯ
self.player_y += self.player_dy
dist = PLAYER_RADIUS + self.platform_y + PLATFORM_HEIGHT / 2
ако self.player_y < dist:
self.player_y = dist
self.player_dy = 0
self.jump_count = 0
Добавяне на функция за двоен скок
За да добавите функция за двоен скок, разширете съществуващата логика за скок. Когато играчът е на платформата и натисне клавиша със стрелка нагоре за първи път, той ще извърши нормален скок. Ако обаче натиснат отново клавиша със стрелка нагоре, докато са във въздуха, играчът ще извърши двоен скок.
Създайте нов файл с име двоен скок.py и кода със следните актуализации:
класGameWindow(аркадна. прозорец):
деф__в него__(себе си):
self.jump_count = 0# Проследете броя на скоковетедефon_key_press(самостоятелно, ключ, модификатори):
on_ground = PLAYER_RADIUS + self.platform_y + PLATFORM_HEIGHT / 2
ако ключ == arcade.key. НАГОРЕ:
ако self.player_y == on_ground или self.jump_count < 2:
self.player_dy = 10
self.jump_count += 1
Включително допълнителни функции
Освен простите и двойните скокове, има много функции, които можете да добавите, за да подобрите механиката на скоковете на вашата игра.
Внедряване на променлива височина на скока
Позволяването на играча да контролира височината на своите скокове въз основа на това колко дълго държи бутона за скок може да добави повече контрол и стратегия към играта. Ето пример за това как можете да приложите променлива височина на скока. Създайте нов файл с име променлива-jump.py и кода със следните актуализации:
ГРАВИТАЦИЯ = 0.5
JUMP_POWER_INCREMENT = 0.2
MAX_JUMP_POWER = 100класGameWindow(аркадна. прозорец):
деф__в него__(себе си):
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "Механика на скока")
self.jump_pressed = Невярно
self.jump_power = 0дефon_key_press(самостоятелно, ключ, модификатори):
on_ground = PLAYER_RADIUS + self.platform_y + PLATFORM_HEIGHT / 2ако ключ == arcade.key. НАГОРЕ и self.player_y == on_ground:
self.jump_pressed = Вярнодефon_key_release(самостоятелно, ключ, модификатори):
ако ключ == arcade.key. НАГОРЕ:
self.jump_pressed = Невярнодефupdate_jump_power(себе си):
# Увеличете силата на скок, докато бутонът за скок е задържан
ако self.jump_pressed:
self.jump_power += JUMP_POWER_INCREMENTако self.jump_power > MAX_JUMP_POWER:
self.jump_power = MAX_JUMP_POWER
друго:
ако self.jump_power > 0:
self.jump_power -= 1дефon_update(самостоятелно, делта_време):
self.player_dy -= ГРАВИТАЦИЯ
dist = PLAYER_RADIUS + self.platform_y + PLATFORM_HEIGHT / 2ако self.player_y == dist и self.jump_power > 0:
self.player_dy = self.jump_power
self.player_y += self.player_dy
self.update_jump_power()
Внедряване на функцията Air Dash
Добавянето на механик за въздушно тире може да даде на играча допълнителни възможности за мобилност, докато е във въздуха. Създайте нов файл с име air-dash.py и кода със следните актуализации:
AIR_DASH_DISTANCE = 100
MAX_AIR_DASHES = 2класGameWindow(аркадна. прозорец):
деф__в него__(себе си):
super().__init__(SCREEN_WIDTH, SCREEN_HEIGHT, "Механика на скока")
self.on_ground = Невярно
self.air_dashes = 0
self.can_air_dash = Вярнодефon_key_press(самостоятелно, ключ, модификатори):
ако ключ == arcade.key. НАГОРЕ и self.on_ground:
self.player_dy = 10
елиф ключ == arcade.key. НАГОРЕ и \
self.air_dashes < MAX_AIR_DASHES и \
self.can_air_dash:
self.player_dx = AIR_DASH_DISTANCE
self.air_dashes += 1
self.can_air_dash = Невярнодефon_update(самостоятелно, делта_време):
self.player_dy -= ГРАВИТАЦИЯ
self.player_y += self.player_dydist = PLAYER_RADIUS + self.platform_y + PLATFORM_HEIGHT / 2
ако self.player_y <= dist:
self.player_y = dist
self.player_dy = 0
self.on_ground = Вярно
друго:
self.on_ground = Невярноself.player_x += self.player_dx
ако self.player_x < PLAYER_RADIUS:
self.player_x = PLAYER_RADIUS
self.player_dx = 0
елиф self.player_x > SCREEN_WIDTH - PLAYER_RADIUS:
self.player_x = SCREEN_WIDTH - PLAYER_RADIUS
self.player_dx = 0
ако self.on_ground:
self.air_dashes = 0
self.can_air_dash = Вярно
Когато изпълнявате въздушния удар, вашият играч ще се отдалечи далеч от платформата:
Най-добри практики за механика на скокове
Внедряването на механика за скачане в игра изисква внимателно обмисляне, за да се осигури плавно и приятно игрово изживяване. Ето някои най-добри практики, които трябва да имате предвид:
Височина и продължителност на балансиран скок
За да поддържате усещане за реализъм и трудност на играта, е важно да балансирате височината и продължителността на скока. Твърде висок или твърде къс скок може да повлияе отрицателно на играта. Експериментирайте с различни височини и продължителности на скока, за да намерите правилния баланс за вашата игра.
Помислете за физиката на играта, способностите на героя и цялостния дизайн на нивата, когато определяте подходящата механика за скок.
Осигурете визуална и аудио обратна връзка
Визуалната и звукова обратна връзка е от решаващо значение, за да направите скоковете да се чувстват отзивчиви и удовлетворяващи. Използвайте анимации или ефекти на частици, за да изобразите скачащото движение и приземяването на играча.
Освен това, помислете добавяне на звукови ефекти или фонова музика което подобрява изживяването при скачане. Тези визуални и аудио сигнали допринасят за потапянето и ангажираността на играчите.
Фина настройка на откриването на сблъсък
Точното откриване на сблъсък между играча и платформите е от съществено значение за прецизната и надеждна механика на скачане. Уверете се, че алгоритъмът за откриване на сблъсък е надежден и правилно обработва различни сценарии, като кацане върху платформа, сблъсък с препятствия или плъзгане по стени.
Тествайте и повтаряйте своя код за откриване на сблъсък, за да елиминирате всички проблеми или несъответствия, които могат да повлияят на механиката на скока.
Направете игрите по-забавни с Jumping Mechanics
Добавянето на механика за скачане може значително да подобри ангажираността и удоволствието от играта. Той отваря нови възможности за дизайн на нива, пъзели и предизвикателни препятствия. Като внедрите различни механики за скокове в библиотеката за аркадни игри на Python, можете да създавате завладяващи платформинг игри, които забавляват играчите с часове.
Не забравяйте, че експериментирането с различни механики за скок и включването на уникални функции може да открои играта ви и да я превърне в завладяващо и запомнящо се изживяване за играчите.