unity3d Time.deltaTime个人理解

官方的解释是:静态只读属性,时间增量,渲染上一帧所花费的时间
看下面的代码

    /// <summary>
    /// 每帧刷新
    /// </summary>
    void Update()
    {
        transform.Translate(0, 0, Time.deltaTime * 10); //物体沿着自身Z轴方向,每秒移动物体10米运动
    }

这个方法所用的公式很简单:距离=时间*速度

我读官方解释的时候,有点迷惑,既然是渲染上一帧的时间,说明帧已经渲染完毕,那么计算出来的坐标,已经不能用在上一帧里面。这个过程是怎样的呢?从头设想:一开始,渲染的是初始帧,假设用的时间为t1,那么现实世界中物体移动的距离是t1*10,但是,我们只是看到了物体停留在初始位置。接着渲染第二帧,将刚才计算出来的坐标用于第二帧的渲染。假设渲染用时t2,那么现实世界中物体移动的距离是t2*10。但是,我们只是看到了物体经过时间t1后所在位置,而当前时间已经过了t1+t2。也就是说,我们看到的画面是滞后的

当然,以上纯属个人猜测,本人初学unity 3d,有不对的地方还待指正

posted on 2019-11-11 17:41  drewwestlhq  阅读(157)  评论(0编辑  收藏  举报

导航