关于Unity中Time.deltaTime的使用
Posted 杭者
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于Unity中Time.deltaTime的使用相关的知识,希望对你有一定的参考价值。
例子
void Update () {
this.transform.Rotate(Vector3.up, Time.deltaTime * 50, Space.World);
//绕世界的y轴旋转,1秒钟转50度,Space.World是让它绕世界坐标系的y轴旋转,没写的话会绕它自己坐标系的y轴旋转
//显然,Time.deltaTime是按照每秒来统计的。 Update()的刷新是按照每帧来显示的,但是Time.deltaTime是按照秒来统计的。
//我的理解是我们这里只设置它1秒钟,也就是1个Time.deltaTime转多少度,系统会帮我们计算每一帧该转多少度(除于当前秒的帧数,如流畅时候60),然后每次update的时候都转这个它自己计算好的角度
}
还可以这样理解
Time.deltaTime * 50
表示1秒要转动多少角度,我们设置好以后,这个值就定下来了,也就是说,不管中间刷新几次,执行几次Update函数,最终的结果就是在1秒钟内,物体绕y轴旋转了50度。
而具体中间刷新了几次,执行了几次Update则是受电脑性能的影响,性能好的话可以达到60次,性能不好的话可能只有30次。
然而,刷新60次的效果就会看起来很流畅,而刷新30次的效果就会看起来很卡,像是漂移过去的。
但是不管过程怎么样,结果都是一样的,系统会帮我们计算每一秒能刷新多少次,也就是每一秒有几帧,然后帮我们把Time.deltaTime * 50除于每秒的帧数,得到每一帧该旋转的角度数,给Update里面的语句执行。
所以,其实每一帧的旋转的度数不是一定的,会随着帧频的改变而改变,而帧频又受各种硬件因素和其他因素的影响会不断变化。
以上是关于关于Unity中Time.deltaTime的使用的主要内容,如果未能解决你的问题,请参考以下文章
你啥时候乘以 Unity 中的 Time.deltaTime?
你啥时候乘以 Unity 中的 Time.deltaTime?