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) 编辑 收藏 举报