我在均勻移動精靈時遇到了問題;目前我正在使用while循環來移動它們,問題在於計算機速度越快,循環越快,精靈移動的速度越快。我已經嘗試了pygame中的定時器/時鐘函數(等待?),它在等待時凍結了光標,因此使光標跳動。我如何讓精靈在Pygame&Python中的所有電腦上均勻移動
是多線程的答案?
這裏是我的問題的視頻; http://www.youtube.com/watch?v=cFawkUJhf30
我在均勻移動精靈時遇到了問題;目前我正在使用while循環來移動它們,問題在於計算機速度越快,循環越快,精靈移動的速度越快。我已經嘗試了pygame中的定時器/時鐘函數(等待?),它在等待時凍結了光標,因此使光標跳動。我如何讓精靈在Pygame&Python中的所有電腦上均勻移動
是多線程的答案?
這裏是我的問題的視頻; http://www.youtube.com/watch?v=cFawkUJhf30
您取決於幀速率,幀率越快,運動速度越快。
通常,我們正在計算2幀/循環迭代之間的時間,我們稱之爲「增量時間」。然後我們將這個增量時間乘以運動向量。
這裏是一個循環樣品:
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
然後移動跟隨幀率:如果你的循環速度更快,那麼增量更低,然後將移動每幀=>結果越慢無論幀率如何,速度都相同。
你現在獨立於幀率。
作爲一個方面認爲,將'上限'放在'dt'上是明智的,以防發生負載峯值。 – badp 2012-02-14 12:35:10
mx是什麼定義的? – 2012-02-14 12:56:34
沒關係,它現在沒有'px * = mx *速度 py * =我*速度'位 ** Thankyou這麼多** – 2012-02-14 12:59:34
我發現一個線程處理這個問題here:
嘗試以下操作:
clock = pygame.time.Clock()
while True:
if clock.tock(60): #Limit to 60fps
... #Update game display here
else:
cursor.update()
+1的視頻! – badp 2012-02-14 12:36:34