我有一个pygame.Timer在我的游戏中运行调用绘图功能32次/秒。绘图方法从屏幕上的所有元素获取位置并相应地将它们点亮。但是,我希望主角走动比其他对象移动慢。
我应该专门为它设置一个计时器,还是应该多次对同一帧进行blit?有没有更好的方法呢?向正确的方向推进将是非常棒的:)
(如果有人感兴趣,这里是当前控制要发送到绘图的帧的代码:http://github.com/kallepersson/subterranean-ng/blob/master/Player.py#L88)
答案 0 :(得分:1)
您的步行循环帧(与所有运动一样)应该是绝对时间的函数,而不是帧数。 e.g:
def walk_frame(millis, frames_per_second, framecount, start_millis=0):
millis_per_frame = 1000 / frames_per_second
elapsed_millis = millis - start_millis
total_frames = elapsed_millis / millis_per_frame
return total_frames % framecount