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
表示单帧的持续时间(秒)。
用于帧率无关的移动:
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 # Raises ValueError
引擎内部管理时间状态。
有关游戏循环的更多信息,请参见游戏循环。