您当前的位置: 首页 > 

Peter_Gao_

暂无认证

  • 0浏览

    0关注

    621博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

deltaTime —— 增量时间

Peter_Gao_ 发布时间:2021-09-15 13:06:00 ,浏览量:0

deltaTime 官方的解释我就不说了

官方的解释多数新手都是看不懂的,不然也不会四处搜博文来学习了

?想要理解增量时间,我们拿物体的移动这种经典案例来说明

要让一个物体,每秒移动10米,代码如下

 

    /// 
    /// 每帧刷新
    /// 
    void Update()
    {
        //物体沿着自身Z轴方向,每秒移动物体10米运动
        transform.Translate(0, 0, Time.deltaTime * 10);
    }
  Why? —— 为什么乘以增量时间

那么问题来了,多数新手都懵逼在这里: 为什么要乘以增量时间?

我们假设游戏运行时,1秒是60帧。—— 那就是说60个画面,刷!刷!刷!执行完,耗时1秒。

如果电脑,或者手机帧数没有到60帧,时而30帧,时而50帧

那么就会出现,有时候1秒移动了500米 有时候300米,总之每秒都不一样

所以牛逼的前辈们就想到了解决办法,从而引入了增量时间的概念

增量时间是实时变动的,而且每一帧都在变动

根据帧率相应变动:

1秒30帧,那增量时间就是 1/30 秒 1秒60帧,那增量时间就是 1/60 秒 1秒166帧,那增量时间就是 1/166 秒

这样的设计理念,就保证了无论帧率是多是少,我们让物体1秒移动10米,最后1秒移动的就一定是10米

公式:路程=速度*时间

10米=1秒 * 10米/秒 10米=(1/60 * 60) *10米/秒 10米=(1/166 * 166) *10米/秒 10米=(增量时间 * 1秒总帧数) *10米/秒

重点:

Update函数是每帧执行一次,那么经历过一帧耗费的时间就是 增量时间/deltaTime

1秒内Update执行的次数,就是1秒内执行的总帧数

所以我们只需要写上 transform.Translate(0, 0, Time.deltaTime * 10)这一个函数

Update执行了1次,transform.Translate(0, 0, 1/60 * 10)执行一次,物体移动了1/6米

Update1秒内执行了60次,就是transform.Translate(0, 0, Time.deltaTime * 10)乘以60次 相当于 =(每帧时间1/60 * 速度 * 60)=10米

Update1秒内执行了N次,就是transform.Translate(0, 0, Time.deltaTime * 10)乘以N次 相当于 =(每帧时间1/N * 速度 * N)=10米 ————————————————   原文链接:https://blog.csdn.net/ChinarCSDN/article/details/82914420

关注
打赏
1664521772
查看更多评论
立即登录/注册

微信扫码登录

0.0643s