Частота кадров влияет на скорость игры

#python #windows #pygame

Вопрос:

Я тренируюсь в pygame и мне было интересно, как мы можем сделать так, чтобы частота кадров не влияла на скорость выполнения игры

Я бы хотел, чтобы FPS не был заблокирован, а игра всегда работала с одинаковой скоростью.

До сих пор я использовал эту pygame.time.Clock.tick функцию, но скорость персонажа менялась в зависимости от количества кадров в секунду, чего я не хочу.

Ответ №1:

Вы должны рассчитать движение за кадр в зависимости от частоты кадров.

pygame.time.Clock.tick возвращает количество миллисекунд с момента последнего вызова. Когда вы вызываете его в цикле приложения, это количество миллисекунд, прошедших с момента последнего кадра. Умножьте скорость объектов на затраченное время на кадр, чтобы получить постоянное движение независимо от кадров в секунду.

Например, определите расстояние в количестве пикселей, которое игрок должен перемещать в секунду ( move_per_second ). Затем вычислите расстояние на кадр в цикле приложения:

 move_per_second = 500
FPS = 60
run = True
clock = pygame.time.Clock() 
while run:
    ms_frame = clock .tick(FPS)
    move_per_frame = move_per_second * ms_frame / 1000  

    # [...]
 

Комментарии:

1. @Tangax Это зависит от. Вы имеете в виду, что хотите вычислить позиции в другом потоке? Обратите внимание, что для плавного перемещения положения объектов должны быть вычислены по крайней мере один раз за кадр. Если позиция не меняется, нет необходимости обновлять дисплей, а если дисплей не обновляется, нет необходимости обновлять позицию. Не стоит чрезмерно усложнять игровой процесс. Самое простое решение-это один цикл.