@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, отпустил - не перемещается. Как реализовать, чтобы когда отпустил клавишу кубик с угасанием перемещался дальше, а не останавливался мгновенно?
  • Вопрос задан
  • 425 просмотров
Решения вопроса 1
@deliro
Для этого нужно всего лишь изучить физику 8го класса.

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

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

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

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

Войти через центр авторизации
Похожие вопросы