すべての pygame には、次のようなゲーム ループがあります。
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
pygame.display.flip()
print("tick " + str(pygame.time.get_ticks()))
clock.tick(1)
のAPIによるとget_ticks()
:
pygame.init() が呼び出されてからのミリ秒数を返します。pygame が初期化される前は、これは常に 0 です。
しかしclock.tick()
:
このメソッドは、フレームごとに 1 回呼び出す必要があります。の数を計算します。前回の呼び出しからミリ秒が経過しました。
オプションのフレームレート引数を渡すと、関数は遅延して、指定されたティック/秒よりも遅くゲームを実行し続けます。これは、ゲームの実行速度を制限するために使用できます。フレームごとに 1 回 Clock.tick(40) を呼び出すことにより、プログラムは 1 秒あたり 40 フレームを超えて実行されることはありません。
少し混乱していますが、それclock.tick()
はゲームの開始から経過したミリ秒数に直接影響するということですか?
つまりclock.tick(40)
、1 秒あたり 40 フレームを「発行」し、while ループが 1 秒あたり 40 回実行されるということですか?
fps と ticks の関係がわかりません。
更新: 実際にテストしたところ、orget_ticks()
にどのような fps を指定しても、mls 単位で REAL 時間が返されます。tick() - 0.1
30
60
したがって、ゲームの実行速度またはwhile loop が自分自身を更新する頻度をclock.tick()
設定するだけのようです。
しかし、私はまだ少し混乱しています。他の回答は大歓迎です。