unity 快速了解为什么要乘Time.deltatime

Time.deltatime是什么?

一个值,表示在当前机器上每帧之间的间隔时长,如1秒60帧的机器Time.deltatime=1/60;

乘上Time.deltatime的目的是什么?

为了在帧率不同的机器上呈现相同的效果(即脚本中设定的值)

原理是什么呢?

以在Update为例,比如:

A电脑在1秒内Update可以执行100次,即100帧,B电脑则为60帧.

此时在Update中有一个方法,每一次调用都会+1;

当不乘Time.deltatime时:

 在A电脑中1秒钟+1执行100次,最终+100每秒

 在B电脑中1秒钟+1执行60次,最终+60每秒

当乘上Time.deltatime时:

 在A电脑中1秒钟+1 * Time.deltatime(1/100)执行100 次,即最终+1每秒

 在B电脑中1秒钟+1 * Time.deltatime(1/60)执行60次,即最终+1每秒

可以发现当乘上该值后,在不同的机器上每秒的变化都将是相等的。

总结:

Time.deltatime就有点像一个补偿机制,使得帧数高的机器会乘上一个更小的系数,从而弥补因为帧率而导致的不平衡。

易错小分享:

并不是所有的变化量都可以乘上Time.deltatime,比如在角色的移动脚本中对Rigidbody的velocity修改时乘上Time.deltatime就会使得角色无法移动:

而同Rigidbody的MovePosition则需要乘上Time.deltatime:

关键在于前者以秒为单位,后者以帧为单位【查阅自unityAPI】。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值