网上有多个不同版本的Itween插件使用方法,但各个地方讲解的比较分散,所以在这里统一进行整理。
一、 iTween的使用原理
iTween的核心是数值插值,简单说就是给iTween两个数值(开始值,结束值),它会自动生成一些中间值,例如:开始值-> 中间值 -> 中间值 …. -> 结束值。
这里的数值可以理解为: 数字,坐标点,角度,物体大小,物体颜色,音量大小等。
二、iTween的使用方式
iTween可以从各个地方获取到,但最正规的方式是从Unity asset store中直接搜索下载(免费)。iTween的主要文件有两个iTween.cs 和 iTweenPath.unitypackage(编辑路径才需要这个包)。
三、核心方法
iTween.MoveTo(): 让模型移动到一个位置,它的底层函数是通过动态的修改模型每一帧的transform.position完成的,所以它会百分之百到达目标点,不会出现误差。
iTween.MoveFrom():它和上面的一样,iTween.MoveTo()是将模型移动到目标位置,而iTween.MoveFrom()是将模型从目标位置移动到原始位置。
iTween.MoveAdd() 和iTween.MoveBy()底层实现一样,大家可以去看源码。处理移动时采用的是transform.Translate也就是API的平移,这样在处理移动的时候可能会出现一些误差,但是效果好点。
iTween.MoveUpdate():和iTween.MoveTo()差不多,只是它需要放在循环或者Update()中。
四、详细内容
API:
后缀名区别
|
***From
|
当前值立即变成目标值,并逐渐缓动成最初值
|
***To
|
从当前值逐渐缓动成目标值
|
***Update
|
同To,但是在使用Update函数时会令人难以置信的提高性能,或类似循环的情况下涉及“live”设置改变值。不在使用EaseType
|
3大事件
|
onstart
|
动画开始触发事件
|
onstarttarget
|
事件通过消息加载将发送给的对象
|
onstartparams
|
发送消息时传递的参数
|
onupdate
|
动画中触发事件
|
onupdatetarget
|
事件通过消息加载将发送给的对象
|
onupdateparams
|
发送消息时传递的参数
|
oncomplete
|
动画结束触发事件
|
oncompletetarget
|
事件通过消息加载将发送给的对象
|
oncompleteparams
|
发送消息时传递的参数
|
公共属性
|
name
|
根据独立的名字用于停止iTweens
|
ignoretimescale
|
设置为true将会允许动画继续当前的时间,这个在游戏通过设置Time.timeScale=0之后暂停游戏后的菜单动画很有用
|
easetype
|
动画运动曲线枚举
|
looptype
|
循环方式枚举
|
time
|
动画完成时间
|
delay
|
开始动画之前等待的时间
|
From-To方法
|
AudioFrom
|
音频和音量
|
AudioTo
|
AudioUpdate
|
CameraFadeFrom
|
摄像机渐隐的数量(透明度)
|
CameraFadeTo
|
ColorFrom
|
颜色
|
ColorTo
|
ColorUpdate
|
FadeFrom
|
游戏对象的alpha值;如果附加的组件是light,guitext或guitexture,将会是变成动画的目标
|
FadeTo
|
FadeUpdate
|
LookFrom
|
随着时间旋转一个游戏对象监视着提供的Transform或Vector3
|
LookTo
|
LookUpdate
|
MoveFrom
|
移动:随着时间改变游戏对象的位置到提供的目标点
|
MoveTo
|
MoveUpdate
|
MoveAdd
|
移动增量Vector3
|
MoveBy
|
RotateFrom
|
旋转:随着时间在角度上旋转游戏对象到提供的欧拉角角度
|
RotateTo
|
RotateUpdate
|
RotateAdd
|
旋转增量Vector3
|
RotateBy
|
旋转增量Vector3*360
|
ScaleFrom
|
缩放:随着时间改变物体的缩放
|
ScaleTo
|
ScaleUpdate
|
ScaleAdd
|
缩放增量Vector3,原来的缩放+Vector3
|
ScaleBy
|
缩放倍数Vector3,原来的缩放*Vector3
|
摄像机
|
CameraFadeAdd
|
创建一个游戏对象(如果不存在)在提供的深度,用于模拟摄像机的褪色
|
CameraFadeDepth
|
改变摄像机褪色的深度
|
CameraFadeDestroy
|
移除和销毁一个摄像机的褪色
|
CameraFadeSwap
|
改变摄像机褪色的纹理
|
CameraTexture
|
使用CameraFade创建并返还一个全屏的Texture2D
|
动画控制
|
Hash
|
创建哈希表
|
Init
|
设置游戏对象当一个初始化被添加时避免停顿
|
Pause
|
暂停itween
|
Resume
|
从新开始iTween
|
Stop
|
停止iTweens
|
StopByName
|
根据名字停止iTweens
|
其他方法
|
ValueTo
|
正如应用程序期望的返回一个在提供的”from”和”to”之间的插值给回调方法.需要”onupdate”回调
|
Count
|
返回iTweens的整数量
|
EaseType
|
缓动类型
|
LoopType
|
循环的枚举类型
|
Stab
|
基于提供的音量,音频,和任何跟随的延迟来播放音频剪辑.音频源是可选的,因为iTween将会提供一个
|
用于调式
|
DrawLine
|
当调用OnDrawGizmos()函数时,他会通过提供的Vector3或Transforms数组画一条线
|
DrawLineGizmos
|
使用Gizmos.DrawLine()通过提供的Vector3s或Transforms数组画一条线
|
DrawLineHandles
|
利用Handles.Drawline()通过提供的Vector3s或Transforms数组画一条线。
|
DrawPath
|
当调用OnDrawGizmos()时,他会通过Vector3或Transforms数组绘制一个曲线路径
|
DrawPathGizmos
|
使用Gizmos.DrawLine()通过Vector3s或Transforms数组绘制一个曲线路径
|
DrawPathHandles
|
利用Handles.DrawLine()通过提供的Vector3s或Transforms绘制一个曲线路径
|
震动
|
PunchPosition
|
使用一个震动的力量给游戏对象的位置使他晃动到他的原始位置
|
PunchRotation
|
使用一个震动的力量给游戏对象的旋转使他晃动到他的原始旋转
|
PunchScale
|
使用一个震动的力量给游戏对象的缩放使他晃动到他的原始缩放
|
ShakePosition
|
随着时间通过一个递减数量随机的震动游戏对象的位置
|
ShakeRotation
|
随着时间通过一个递减数量随机的震动游戏对象的旋转
|
ShakeScale
|
随着时间通过一个递减数量随机的震动游戏对象的缩放
|
路径
|
PathLength
|
返回通过Vector3或Transforms数组绘制的曲线路径的长度
|
PutOnPath
|
根据提供的百分比放置游戏对象的路径
|
PointOnPath
|
根据提供的百分比返回一个路径上的Vector3位置
|
差值运算
|
FloatUpdate
|
根据提供的速度返回一个float缓动在当前和目标值之间;speed=1表示单位时间内达到终点
|
RectUpdate
|
通过提供的加速度返回一个用于缓冲当前和目标值之间的一个矩形;speed=1表示单位时间内达到终点
|
Vector2Update
|
通过提供的加速度返回一个用于缓冲当前和目标值之间的一个Vector2;speed=1表示单位时间内达到终点
|
Vector3Update
|
通过提供的加速度返回一个用于缓冲当前和目标值之间的一个Vector3;speed=1表示单位时间内
|
动画方式枚举:( http://www.robertpenner.com/easing/easing_demo.html)
平方
-
easeInQuad
-
easeOutQuad
-
easeInOutQuad
立方
-
easeInCubic
-
easeOutCubic
-
easeInOutCubic
4次方
-
easeInQuart
-
easeOutQuart
-
easeInOutQuart
5次方
-
easeInQuint
-
easeOutQuint
-
easeInOutQuint
正弦
-
easeInSine
-
easeOutSine
-
easeInOutSine
2的10次方
-
easeInExpo
-
easeOutExpo
-
easeInOutExpo
平方根
-
easeInCirc
-
easeOutCirc
-
easeInOutCirc
线性
弹簧
反弹
-
easeInBounce
-
easeOutBounce
-
easeInOutBounce
后退
-
easeInBack
-
easeOutBack
-
easeInOutBack
松紧带
-
easeInElastic
-
easeOutElastic
-
easeInOutElastic
动画曲线:
easyIn:淡入 easyOut:淡出 easyInOut:淡入淡出
循环类型: none(一次性的不循环),loop(单向循环,就是到达终点后马上回到起点,再继续),pingpong(往复循环)
五、路径配置
1. 将iTweenPath.cs拖至某个游戏对象上, 这个游戏对象的就会多出如下属性,下图表示路径由5个节点组成, 路径名称为myPath。
2. 可以手工填写节点坐标,也可以在场景中调整节点坐标。
代码可以参考官方示例,本文就不进行介绍了。
参考文档:
http://www.xuanyusong.com/archives/2052
http://blog.csdn.net/chaixinke/article/details/44628123
http://www.manew.com/1683.html