unity学习笔记之用Lerp和Time.deltaTime,做移动或者旋转的动画

现在大部分移动旋转类的动画,有一个风靡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,这个是固定时间间隔,不随设备的性能高低而变化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值