Unity笔记2 - Time.deltaTime(时间增量)

如果大佬在阅读过程中发现本人有误或有更好用的方法,欢迎指正和教导,十分感谢

 

初学过程中,发现有一个常用的Time类成员变量Time.deltaTime,并且没找到相关的详细解释。只知道想要对某个对象进行一段时间内的操作,用这个变量会比较平滑。

该变量被经常用在Update方法中,Update方法是每帧调用的刷新函数。而每帧之间的间隔时间并不固定,Time.deltaTime其实就是当前帧与上一帧之间的时间间隔。

举例:

void Update() {
    Debug.Log("Time.deltaTime = " + Time.deltaTime); // 打印输出每一帧的时间间隔。
    this.transform.Translate(0, 0, 10 * Time.deltaTime); // 将对象沿Z轴方向每秒移动10个单位的距离。
}

这里因为Update是每帧执行,所以10*Time.deltaTime是计算出当前帧与上一帧之间的时间增量对应的距离。
上述代码打印结果:

Time.deltaTime = 0.02
Time.deltaTime = 0.1
Time.deltaTime = 0.02920806
Time.deltaTime = 0.06096995
Time.deltaTime = 0.01705098
Time.deltaTime = 0.01612198
Time.deltaTime = 0.01717496
Time.deltaTime = 0.02742994
Time.deltaTime = 0.01596308

原理:

以上结果可以看到每帧的间隔时间并不是均匀的,假设每秒有5帧,1s = 5f,若想让物体每秒移动10单位,也就是每5帧移动10单位。

这5帧对应的时间分别可以定义为t1、t2、t3、t4、t5。

转化为速度时间距离,问题就简单的多了。

速度已知是10,每帧的时间就是Time.deltaTime,所以,上述代码中的10 * Time.deltaTime实际上就是每帧的移动距离,因为时间不固定,所以每帧对应的平均距离也不固定,这样计算保证了物体移动过程中的速度是固定的。

相比每帧都移动固定的2,虽然同样能够实现每秒走10,但是使用Time.deltaTime能保证移动过程的平滑和顺畅,速度一致。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值