学习-godot-1-什么是增量时间 delta

548 阅读1分钟

在 ​​Godot 引擎​​中,​​Delta Time(Δt,增量时间)​​ 是一个非常重要的概念,它表示 ​​上一帧到当前帧之间的时间间隔(以秒为单位)​​。

​1. 什么是 Delta Time?​

  • ​Delta Time(Δt)​​ = 当前帧时间 - 上一帧时间
  • 单位:​​秒(seconds)​
  • 作用:确保游戏逻辑在不同帧率(FPS)下运行一致,避免因设备性能差异导致游戏速度忽快忽慢。

​2. 为什么需要 Delta Time?​

假设你有一个物体以 ​​每秒移动 100 像素​​ 的速度移动:

  • 如果游戏运行在 ​​60 FPS​​(每帧约 0.0167 秒),则每帧移动 100 * 0.0167 ≈ 1.67 像素。
  • 如果游戏运行在 ​​30 FPS​​(每帧约 0.0333 秒),则每帧移动 100 * 0.0333 ≈ 3.33 像素。

如果没有 ​​Delta Time​​,低帧率时物体会移动得更快,导致游戏体验不一致。
​使用 Delta Time 后​​,无论帧率如何,物体每秒都会移动 ​​100 像素​​(speed * delta)。


​3. 在 Godot 中如何使用 Delta Time?​

Godot 会自动在 _process(delta) 和 _physics_process(delta) 中传入 delta 参数,你只需要用它来计算移动、动画等逻辑。

extends Node2D

var speed = 200  # 每秒 200 像素

func _process(delta):
    position.x += speed * delta  # 每帧移动 speed * delta 像素

4. _process(delta) vs _physics_process(delta)

方法调用频率适用场景
_process(delta)每帧调用(受 Engine.iterations_per_second 影响)非物理相关的逻辑(UI 动画、普通移动)
_physics_process(delta)固定时间步长(默认 60 次/秒)物理相关逻辑(刚体运动、碰撞检测)

​推荐:​

  • ​普通移动​​ → _process(delta)
  • ​物理运动​​ → _physics_process(delta)