Python 在PyGame中确保恒定的动画速度,而不考虑FPS

Python 在PyGame中确保恒定的动画速度,而不考虑FPS,python,pygame,Python,Pygame,我要开始玩PyGame了。由于有了(一些)统一性知识,我习惯于将我的移动量乘以Time.timeDelta,这使移动速度正常化。但是,如果我这样做: delta = clock.tick(x) circle.move(delta) pygame.display.flip() 如果我计算圆到达目的地所需的时间,我将在不同的x值上得到不一致的结果。每秒10帧的速度大约需要5.75秒,而每秒60帧的速度超过8秒 如何确保移动速度并获得良好的时间增量?可能是因为截断了坐标。如果调整坐标,则在60 fp

我要开始玩PyGame了。由于有了(一些)统一性知识,我习惯于将我的移动量乘以Time.timeDelta,这使移动速度正常化。但是,如果我这样做:

delta = clock.tick(x)
circle.move(delta)
pygame.display.flip()
如果我计算圆到达目的地所需的时间,我将在不同的x值上得到不一致的结果。每秒10帧的速度大约需要5.75秒,而每秒60帧的速度超过8秒


如何确保移动速度并获得良好的时间增量?

可能是因为截断了坐标。如果调整坐标,则在60 fps时调整的次数要比10 fps时多得多,因此移动速度可能会较慢

在这种情况下,如果对坐标进行舍入,可以获得更接近的结果


另一种解决方案是将坐标保持为浮点数,因此您可以使用存储的浮点数作为基准来计算移动,然后取整以int坐标绘制精灵。

您需要做的就是执行circle.move(x),其中x是您希望精灵移动的空间。 这样,FPS对您来说应该不是问题,它将移动任意距离

我猜,如果这不起作用,很抱歉


-皮普

你基本上是用这个东西乘以这个东西。。。e、 如果你以60帧/秒的速度移动。。。与每秒10帧相比。。。你想将每秒10帧的速度乘以6

将动作和动画乘以从最后一帧开始经过的时间,并确保你的计时器足够准确,使其有意义(pygame应该有一个足够好的计时器)@Patashu对不起,但这件事对我来说有点难以理解。你能大致概括一下解决方案吗?如果链接的信息“太难理解”,我建议你仔细思考,直到它不理解为止,因为理解它是非常重要的。或者你可以问一些具体的问题;Delta应该是上一次到当前时间的变化。在你的代码中,你只需要抓取当前时间。试试
时钟。勾选busy\u loop(x)
,它会更稳定。另外,你能发布move方法的代码吗?它们在内部存储为float。好的,再猜一猜,你是否在进行除法?如果除法只涉及int值,则得到整数除法。