• 关于Unity Time.deltaTime的理解和使用


    Unity中的Time.deltaTime是一个表示上一帧到当前帧所用时间的浮点数。

    它可以让Unity应用程序能够以平滑的方式在不同的帧率下运行。

    要深刻理解Time.deltaTime,首先得了解Unity引擎得工作原理。

    Unity引擎以每秒帧数(FPS)的形式运行。

    比如我们经常在编辑器里面运行程序时,如下图红框所看到就是游戏运行帧率。

    假如帧率是60FPS,意思就是引擎每秒更新60次。每次更新称为一帧,那么每帧的时间间隔是1/60秒,约等于0.0167秒。

    Time.deltaTime的值表示上一帧到当前帧所用的时间,以秒为单位。它的值会根据游戏的帧率而变化。如果游戏以60FPS运行,那么每帧的时间间隔就是0.0167秒,Time.deltaTime的值就会接近0.0167。如果游戏以30FPS运行,每帧的时间间隔就是0.0333秒,Time.deltaTime的值就会接近0.0333。

    而程序运行得帧率会受硬件或者系统的影响,此时Time.deltaTime就派上用场了。Time.deltaTime可以将我们的游戏逻辑与时间解耦,使其在不同的硬件或系统上都能以相同的速度运行,而不受帧率的影响。这对于实现平滑的动画、物理模拟和其他与时间相关的操作非常重要。

    通常我们会用在以下地方:

    1、控制物体平滑移动:

    transform.Translate(Vector3.forward * speed * Time.deltaTime);

    通过乘于Time.deltaTime,就可以让物体以每秒speed单位的速度向前移动,而不收帧率的影响。

    2、平滑动画:

    transform.position = Vector3.Lerp(startPos, endPos, t * Time.deltaTime);//t是一个表示动画进度的变量。

    3、计时器:

    1. float time;
    2. void Update()
    3. {
    4. if(time<60)
    5. {
    6. time += Time.deltaTime;
    7. }
    8. }

    第三种是最常用的方法了。

  • 相关阅读:
    Checkpoint机制和生产配置
    字符串匹配算法KMP原理
    DRM系列(9)之drm_atomic_helper_commit
    前端 折叠面板 折叠展开动画
    一种解决多旅行商问题的改进的遗传算法
    详解kubernetes中的Pod生命周期
    关于地方美食的HTML网页设计——地方美食介绍网站 HTML顺德美食介绍 html网页制作代码大全
    Redis解决超卖问题(一种多线程安全问题) 乐观锁、悲观锁
    JMeter笔记9 | JMeter参数化
    43. 字符串相乘
  • 原文地址:https://blog.csdn.net/mr_five55/article/details/134542526