Python 帧速率影响游戏的速度

Python 帧速率影响游戏的速度,python,pygame,pygame-clock,pygame-tick,Python,Pygame,Pygame Clock,Pygame Tick,我正在练习pygame,我想知道如何才能使帧速率不影响游戏的执行速度 我希望FPS不被锁定并且游戏始终以相同的速度运行 到目前为止,我使用了pygame.time.Clock.tick功能,但是角色的速度根据FPS的数量而变化,这是我不想要的。你必须根据帧速率计算每帧的移动量 返回自上次调用以来的毫秒数。当您在应用程序循环中调用它时,这是自上一帧以来经过的毫秒数。将对象速度乘以每帧经过的时间,以获得恒定的运动,而不考虑FPS 例如,定义播放器每秒移动的像素数距离(move\u per\u sec

我正在练习pygame,我想知道如何才能使帧速率不影响游戏的执行速度

我希望FPS不被锁定并且游戏始终以相同的速度运行


到目前为止,我使用了
pygame.time.Clock.tick
功能,但是角色的速度根据FPS的数量而变化,这是我不想要的。

你必须根据帧速率计算每帧的移动量

返回自上次调用以来的毫秒数。当您在应用程序循环中调用它时,这是自上一帧以来经过的毫秒数。将对象速度乘以每帧经过的时间,以获得恒定的运动,而不考虑FPS

例如,定义播放器每秒移动的像素数距离(
move\u per\u second
)。然后计算应用程序循环中每帧的距离:

move_per_second=500
FPS=60
运行=真
clock=pygame.time.clock()
运行时:
ms_帧=时钟滴答声(FPS)
每帧移动\u=每秒钟移动\u*ms\u帧/1000
# [...]

您必须根据帧速率计算每帧的移动量

返回自上次调用以来的毫秒数。当您在应用程序循环中调用它时,这是自上一帧以来经过的毫秒数。将对象速度乘以每帧经过的时间,以获得恒定的运动,而不考虑FPS

例如,定义播放器每秒移动的像素数距离(
move\u per\u second
)。然后计算应用程序循环中每帧的距离:

move_per_second=500
FPS=60
运行=真
clock=pygame.time.clock()
运行时:
ms_帧=时钟滴答声(FPS)
每帧移动\u=每秒钟移动\u*ms\u帧/1000
# [...]

感谢您的回答,我发现我们可以使用两个不同的循环(一个用于引擎,一个用于渲染),因此游戏的计算速度相同。什么是最好的选择?@Tangax这取决于。你的意思是要计算不同线程中的位置吗?注意,为了平滑移动,对象的位置必须每帧至少计算一次。如果位置没有改变,则无需更新显示器;如果显示器没有更新,则无需更新位置。不要使游戏过程过于复杂。最简单的解决方案是一个循环。感谢这个答案,我发现我们可以使用两个不同的循环(一个用于引擎,一个用于渲染),因此游戏的计算速度相同。什么是最好的选择?@Tangax这取决于。你的意思是要计算不同线程中的位置吗?注意,为了平滑移动,对象的位置必须每帧至少计算一次。如果位置没有改变,则无需更新显示器;如果显示器没有更新,则无需更新位置。不要使游戏过程过于复杂。最简单的解决方案是一个循环。