スプライトを均等に動かすことに問題があります。現在、whileループを使用してそれらを移動していますが、これの問題は、コンピューターが高速であるほど、ループが高速になり、スプライトが高速に移動することです。pygame でタイマー/クロック機能 (待機?) を試しましたが、待機中にカーソルがフリーズするため、カーソルがびくびくします。
マルチスレッドが解決策ですか?
これが私の問題のビデオです。 http://www.youtube.com/watch?v=cFawkUJhf30
スプライトを均等に動かすことに問題があります。現在、whileループを使用してそれらを移動していますが、これの問題は、コンピューターが高速であるほど、ループが高速になり、スプライトが高速に移動することです。pygame でタイマー/クロック機能 (待機?) を試しましたが、待機中にカーソルがフリーズするため、カーソルがびくびくします。
マルチスレッドが解決策ですか?
これが私の問題のビデオです。 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
次に、動きはフレームレートに従います。ループが速い場合、デルタは低くなり、フレームごとの動きは遅くなります => フレームレートが何であれ、結果は同じ速度になります。
これで、フレームレートに依存しなくなりました。