pyxen.time
エンジンからフレームベースのタイミング情報にアクセスします。
参照:ゲームループ。
time = pyxen.time
timeモジュールは以下を提供します:
- 現在のフレーム番号
- フレームレート
- デルタタイム
- 経過時間
すべてのプロパティは読み取り専用です。
プロパティ
| プロパティ | 型 | 説明 |
|---|---|---|
frame | int | 開始からの現在のフレーム番号 |
fps | int | 目標フレームレート |
dt | float | デルタタイム(フレームあたりの秒数) |
t | float | 経過時間(秒) |
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 が発生
エンジンが時間の状態を内部的に管理しています。
ゲームループも参照してください。