Setting a fixed FPS in Pygame, Python 3

空扰寡人 提交于 2020-02-21 12:51:17

问题


I'm currently making a game using PyGame (Python 3), and I'm looking for a way to make the game run at a fixed FPS.

Most of the game is located inside a giant while loop, where the user input is taken, sprites are rendered, etc. every tick. My goal is to be able to set a fixed FPS that will make the game run at the same speed on a fast or slow computer.

I can, of course, use the clock module in pygame:

clock = pygame.time.Clock()

and then call this every loop:

clock.tick(30)

but that will keep the game CAPPED at 30 FPS. So if I set it to 500 FPS it might still run as fast as it did before. My goal is that if I set it to 500 FPS it will run at the same SPEED as it would at 500 FPS...

So is it possible to make the game run at a fixed FPS (or make an illusion of that), regardless of the speed of the computer - or at least run at the same speed through the use of some frame-skip algorithm?

Sorry if that wording was rather confusing.


回答1:


The clock.tick returns the time since the last call to clock.tick. Use that value and multiply all your speeds with it when you move. Example

dt = clock.tick(60)
player.position.x += player.xSpeed * dt
player.position.y += player.ySpeed * dt

This way your player will always move at the same speed regardless of what you put into the clock.tick() function.

Important to remember is to only call clock.tick() once per frame.



来源:https://stackoverflow.com/questions/35617246/setting-a-fixed-fps-in-pygame-python-3

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!