Update() 方法每帧执行一次。
如果要在Update里面写物体运动等代码,假设认为物体每秒运动30m,且当前每秒为60帧,那么每秒就会调用Update方法60次(一帧调一次),所以理所当然的认为,Update里面应该写着
private void Update()
{
this.transform.Translate(0, 0, 30/60);
}
这样做的问题就是,如果别人的机器比较慢,导致每秒只能渲染50帧,那么1s就只会调用Update方法50次,那么他一秒钟就只能走50*30/60=25m。
这样就会导致电脑好的玩家玩游戏时走得快,电脑坏的走得慢。这波啊,这波是硬件压制。但是游戏公司也要赚电脑慢的人的钱,所以不能让它们在这方面被硬件限制(误)。
而且自己电脑卡的时候走的就慢,不卡的时候走的又快了。极端点,如果电脑帧数波动很大,那么速度一下快一下慢也是很折磨的。
那么问题就变成了,如何调整Update,可以使得1s内不同帧数的机器可以实现相同的位移(旋转等),即如何让移动不受机器硬件的影响。
Time.deltaTime就出现了,它指的是完成上一帧的时间,记住它是时间,假设把1s划分成多个帧,图如下。