关于Time.deltatTime的理解

前言

  • 在写有关控制物体运动的脚本中经常会遇到这么一句话
  • Time.deltaTime*speed*dir
  • 我一直不太理解为什么要乘以Time.deltaTime,今天看了一篇博客,基本弄懂了
  • 和update以及FixUpdate有关

我的理解

在update里面
  • 假如你要让物体每秒运动1单位,那么在Update里面,每一帧的时间都是不固定的,但是1s 假设这里有60帧【这个渲染的帧数会随着机器的性能而受到影响】
  • 假如第一帧时间 f1 = 0.1
  • 第二帧 f2 = 0.2
  • 第三帧 f3 = 0.3 …
  • 那么dir*Time.deltaTime*speed = dir*(f1+f2+f3.....) *speed= dir*1*speed = dir*speed
  • 刚好运动dir*speed个距离
在FixUpdate里面
  • 这个函数是物理更新,也就是固定的时间间隔更新一次
  • 在这个函数中调用就可以直接用
  • dir*speed
  • 调整调用的时间间隔 edit -project settings - Fixed Timestep

两者区别

  • update跟当前平台的帧数有关,而FixedUpdate是真实时间,所以处理物理逻辑的时候要把代码放在FixedUpdate而不是Update。
  • update函数的更新频率和设备的性能以及被渲染的物体有关,结果就导致更新频率不一样,会出现卡顿

借鉴博客

  • https://blog.csdn.net/wdjhzw/article/details/73433658?locationNum=7&fps=1

你可能感兴趣的:(Unity)