pyxen.time

エンジンからフレームベースのタイミング情報にアクセスします。

参照:ゲームループ

time = pyxen.time

timeモジュールは以下を提供します:

  • 現在のフレーム番号
  • フレームレート
  • デルタタイム
  • 経過時間

すべてのプロパティは読み取り専用です。


プロパティ

プロパティ説明
frameint開始からの現在のフレーム番号
fpsint目標フレームレート
dtfloatデルタタイム(フレームあたりの秒数)
tfloat経過時間(秒)

frame

current_frame = pyxen.time.frame
  • 0から開始
  • 毎フレームインクリメント
  • フレームベースのロジックに有用

例:

if pyxen.time.frame % 60 == 0:
    print("One second passed (at 60 FPS)")

fps

fps = pyxen.time.fps

エンジンのフレームレートを返します。

例:

print("Running at", pyxen.time.fps, "FPS")

dt(デルタタイム)

delta = pyxen.time.dt

以下と等価:

1.0 / pyxen.time.fps

1フレームの持続時間を秒単位で表します。

フレームレートに依存しない移動に有用:

player.x += speed * pyxen.time.dt

t(経過時間)

elapsed = pyxen.time.t

以下と等価:

pyxen.time.frame / pyxen.time.fps

ゲーム開始からの合計時間を秒単位で表します。

例:

if pyxen.time.t > 10:
    spawn_boss()

フレームベース vs タイムベースのロジック

フレームベース

if pyxen.time.frame % 30 == 0:
    blink()

予測可能で決定的です。


タイムベース

player.x += velocity * pyxen.time.dt

FPSの変化に依存しません。


一般的なパターン


アニメーションタイマー

if pyxen.time.t % 1.0 < 0.5:
    sprite.visible = True
else:
    sprite.visible = False

クールダウンタイマー

if pyxen.time.t - last_shot_time > 0.25:
    shoot()
    last_shot_time = pyxen.time.t

遅延アクション(フレームベース)

if pyxen.time.frame == 120:
    start_level()

読み取り専用の安全性

すべてのプロパティは読み取り専用です:

pyxen.time.frame = 10  # ValueError が発生

エンジンが時間の状態を内部的に管理しています。

ゲームループも参照してください。