私の理解が正しければ、ゲーム ロジックをタイム デルタに基づいて作成する必要があります。
すべてのフレーム間のタイム デルタを取得してから、そのタイム デルタに関してオブジェクトを移動させます。
import time
while True:
# dt is the time delta in seconds (float).
currentTime = time.time()
dt = currentTime - lastFrameTime
lastFrameTime = currentTime
game_logic(dt)
def game_logic(dt):
# Where speed might be a vector. E.g speed.x = 1 means
# you will move by 1 unit per second on x's direction.
plane.position += speed * dt;
1 秒あたりのフレーム数も制限したい場合は、更新ごとに適切な時間だけスリープするのが簡単な方法です。
FPS = 60
while True:
sleepTime = 1./FPS - (currentTime - lastFrameTime)
if sleepTime > 0:
time.sleep(sleepTime)
これは、ハードウェアがゲームに対して十分に高速である場合にのみ機能することに注意してください。ゲーム ループの詳細については、こちらを確認してください。
PS) Javaish 変数名で申し訳ありません... Java コーディングから休憩を取ったところです。