问题
I am practicing on pygame and I was wondering how can we do so that the framerate does not affect the speed of execution of the game
I would like FPS to not be locked and the game to always run at the same speed.
Until now I used the pygame.time.Clock.tick
function but the speed of the character was changing depending on the number of FPS, which I don't want.
回答1:
pygame.time.Clock.tick returns the number of milliseconds passed since the previous call. If you call it in the application loop, then this is the number of milliseconds passed since the last frame.
Multiply the velocity of the player by the passed time per frame, to get a constant movement independent on the FPS.
For instance define the distance in number of pixel, which the player should move per second (move_per_second
). Then compute the distance per frame in the application loop:
move_per_second = 500
FPS = 60
fun = True
clock = pygame.time.Clock()
while run:
ms_frame = clock .tick(FPS)
move_per_frame = move_per_second * ms_frame / 1000
# [...]
来源:https://stackoverflow.com/questions/61352366/framerate-affect-the-speed-of-the-game