@coi1751

Как сделать физику торможения в pygame(Python)?

Стало интересно поиграться с написанием мини игрушек.. а так как предмет моего изучения Python, я выбрал библиотеку pygame. Хочу сделать физику торможения, чтобы когда отпускаешь кнопку, например вправо, персонаж(пока еще кубик) останавливался не сразу, а немного "проехав".
for i in pygame.event.get():
        if i.type == pygame.QUIT:
            work = False
    keys = pygame.key.get_pressed() 
    if keys[pygame.K_LEFT] and Player.x > 0:
        Player.x -= Player.speed
    if keys[pygame.K_RIGHT] and Player.x < 640 - Player.width:
        Player.x += Player.speed

Вот я принимаю событие нажатий клавиш стрелка влево и вправо, то есть нажал - персонаж перемещается на Player.speed, отпустил - не перемещается. Как реализовать, чтобы когда отпустил клавишу кубик с угасанием перемещался дальше, а не останавливался мгновенно?
  • Вопрос задан
  • 81 просмотр
Пригласить эксперта
Ответы на вопрос 1
@deliro
Агрессивное программирование
Для этого нужно всего лишь изучить физику 8го класса.

Ускорение = 0
Пользователь жмёт кнопку — Ускорение = N (единиц расстояния / единицу времени2)
Отпускает — ускорение = 0

Замедление будет какой-то константой. Пусть будет N / 2. Это имитация какой-нибудь силы трения.

Каждый тик увеличиваешь скорость на (ускорение - замедление) * (время тика / твоя единица времени)
Если скорость 0, то замедление заменяется нулём
Если при нажатии нужно мгновенно задать скорость — обрабатываешь это отдельно.
Предел максимальной скорости (если он есть) тоже нужно обрабатывать
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы