第二篇:时间法则 - FixedUpdate与物理步长的秘密
副标题:为什么你的物理对象总在"抽搐"?
引言:时间管理大师的必修课
物理引擎的异常行为中,50%以上与时间控制有关:
- 物体移动时像橡皮筋般伸缩抖动
- 高速运动的物体莫名穿透障碍物
- 不同帧率下物理表现不一致
这些现象的根源,往往源自对物理时间系统的误解。让我们揭开Unity物理引擎的时间面纱。
一、物理世界的时空法则
理解这两个关键概念,是掌控物理系统的第一步:
-
Fixed Timestep的本质
- 物理计算的离散化时间片(默认0.02秒/次)
- 与渲染帧率解耦的设计哲学
- 核心公式:
(ΔT为上一帧到当前帧的真实时间差)实际物理步数 = ceil(ΔT / fixedDeltaTime)
-
时间轴对比实验
- 关键发现:
- 当渲染帧率高于物理帧率时,物理计算可能一帧执行多次
- 当渲染帧率低于物理帧率时,物理计算可能跳过若干次
- 关键发现:
二、FixedUpdate的致命诱惑
为什么说"永远在FixedUpdate中操作Rigidbody"是铁律?
-
经典错误案例
// 错误示范:在Update中直接修改位置 void Update() { rb.MovePosition(transform.position