我遇到了均匀移动精灵的问题;目前我正在使用while循环移动它们,问题是计算机越快,循环越快,精灵移动得越快。我已经尝试了pygame中的定时器/时钟功能(等待?),它在等待时冻结了光标,因此将光标固定在跳线上。
是多线程的答案吗?
答案 0 :(得分:9)
你依赖于帧率,帧速率越快,你的移动速度就越快。
通常,我们计算2帧/循环迭代之间的时间,我们将其称为“增量时间”。然后我们将该delta时间乘以运动矢量。
这是一个循环示例:
clock = pygame.time.Clock()
while True:
# limit the framerate and get the delta time
dt = clock.tick(60)
# convert the delta to seconds (for easier calculation)
speed = 1 / float(dt)
# do all your stuff, calculate your heroes vector movement
# if heroes position is "px, py" and movement is "mx, my"
# then multiply with speed
px *= mx * speed
py *= my * speed
然后移动遵循帧率:如果你的循环更快,那么delta更低,然后每帧的移动速度更慢=>无论帧速率如何,结果都具有相同的速度。
你现在独立于帧率。
答案 1 :(得分:0)
我发现了一个处理此问题的线程here:
尝试以下方法:
clock = pygame.time.Clock()
while True:
if clock.tock(60): #Limit to 60fps
... #Update game display here
else:
cursor.update()