概述
现在大部分移动旋转类的动画,有一个风靡unity届的插件,就是DoTween,各种花里胡哨的效果都能实现。当我们需求变化不多的时候,放个插件有点儿浪费了,所以寻求直接用unity原生API写,当然也是可以实现的。
就是今天的,突然想写一下使用unity自带的API来实现移动和旋转的简单动画,颜色渐变等效果。
Lerp,这个API在很多类里都有,比如说color,mathf,vector等等,它能实现一定步进的变化。
例如,定义一个int A=3,想把它变成9,但是又不想一下子变成9,就可以通过几次循环,分次变成9。
通过下面的代码,在变换4次之后,A被赋值了9。
for(int i=0;i<=3;i++)
{
A = mathf.lerp(3,9,i/3);
}
但是计算机的运算是极其迅速的,所以,我们并看不到一步步变化的过程。如果想实现一步步的看到变化的过程,就要放慢变化的过程,或者说在变化的中间增加暂停。
增加暂停的方式,在unity可以通过协程来实现。在协程方法里,通过yield return new waitseconds(time);等待一个给定的时间,然后程序继续运行。这样的话,需要一个增加协程方法,并且协程是不太安全的。
那么,unity里面提供的Time.deltaTime,为完成上一帧所使用的时间。通常我们使用它来进行计时,或者在运动的速度上加入这个参数使游戏能够暂停。
那么,看下下面的代码
for(float i=0;i<=3;i +=Time.deltaTime)
{
A = mathf.lerp(3,9,i/3);
}
i的每次增加,都需要当前帧运行完成之后,才能进行增加。所以程序不会在瞬间运行完成,而是每帧循环一次,而根据通常每秒50帧来说,这个循环需要3秒才能完成,然后就可以一步步看着A发生变化,而不是瞬间完成。
Time.deltaTime的大作用:
1,计时,
2,在运动等变化速度增加该参数可以使游戏暂停的时候,物体不再变化,
3,简单的动画变化(物体的移动,颜色的渐变,物体的旋转等)
BUT,Time.deltaTime会根据设备性能的不同而发生变化,所以如果需求稳定的时间变化,可以采用Time.fixDeltaTime,这个是固定时间间隔,不随设备的性能高低而变化。
最后
以上就是娇气发夹为你收集整理的unity学习笔记之用Lerp和Time.deltaTime,做移动或者旋转的动画的全部内容,希望文章能够帮你解决unity学习笔记之用Lerp和Time.deltaTime,做移动或者旋转的动画所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复