Unity3d插件iTween的使用

时间:2023-03-09 17:36:12
Unity3d插件iTween的使用

iTween.cs 下载地址:http://pan.ceeger.com/viewfile.php?file_id=1830&file_key=0UJAymOJ

版本为2.0.43

一.iTween 介绍

iTween是一个动画库,目的是最小的投入实现最大的产出.让你做开发更轻松,用它可以轻松实现各种动画,晃动,旋转,移动,褪色,上色,控制音频等等。

二.iTween 原理

iTween的核心是数值插值,简单说就是给iTween两个数值(开始值,结束值),它会自动生成一些中间值,例如:, 开始值-> 中间值 -> 中间值 …. -> 结束值。

这里的数值可以理解为: 数字,坐标点,角度,物体大小,物体颜色,音量大小等。

三.主要文件有两个iTween.cs 和 iTweenPath.unitypackage(编辑路径才需要这个包)

http://l6.yunpan.cn/lk/Qv44q7AV7emHG

四.如何将iTween 加入项目:

在项目中建立Plugins目录, 然后将下载的iTween.cs放到Plugins目录即可。

如果需要编辑路径, 使用import package->custom package菜单功能加入iTweenPath.unitypackage。

五.几种效果演示

1. 物体移动

iTween.MoveTo(gameObject,new Vector3(,,),);

其中第一个参数是要移动的物体
第二个参数是要移动到的目标点坐标
第三个参数是移动需要的时间,然后物体将在2秒之内移动到坐标点为(x=100,y=200,z=0)的位置。
如果你需要在物体移动过程中更好的控制,我们可以添加更多的参数(所有函数可用的参数列表可以参考http://itween.pixelplacement.com/documentation.php):

iTween.MoveTo(gameObject,iTween.Hash("position",new Vector3(100,200,0),"time",2));

这一段代码的效果与第一个例子效果是一样的,只是第二个参数是一个字典类型的数据,可以设置更多的参数。
通用的参数介绍如下:
position:坐标,包括x,y,z三个轴向
path:路径,是一个坐标数组,后面会讲到iTweenPath脚本的使用,配合着itweenPath可以让物体沿着路径点移动。
x:x轴向的位置,如果只设置了x轴,物体就只移动x轴,y,z轴不会改变
orienttopath:如果设置为true,物体移动到目标点的过程中,z轴会一直朝向下一个目标点
looktarget:物体朝向,物体在移动过程中会一直朝向我们设置的坐标点的坐标

looktime:物体看向looktarget或orienttopath设置坐标的时间
islocal:当物体的目标点是相对于父节点的坐标,需要把isLocal设置为true,否则为false
time speed:这两个参数都可以控制物体移动的快慢
delay:延迟时间,当物体开始移动之前等待时间
easetype:移动模式,我们可以设置一些加速度的效果,这个参数值是一个枚举iTween.Easetype
looptype:循环模式,一共有三种模式
iTween.LoopType.none:不循环
iTween.LoopType.loop:循环,物体移动到终点后会跳到起点重新移动
iTween.LoopType.pingPong:来回循环,物体移动到终点后会再以相同的模式和时间再移动到起点,然后再移动到终点,一直循环
onstart:物体开始移动之前的回调函数
onstarttarget:回调函数接收对象,默认开始之前会向iTween.MoveTo函数的第一个参数的物体发送回调,根据需要在这里设置合适的回调接收者
onstartparams:回调方法的参数
onupdate:物体在移动过程中的回调函数
onupdatetarget:物体在移动过程中回调函数的接收者
onupdateparams:移动过程中回调函数的参数
oncomplete:物体移动完成后的回调
oncompletetarget:物体移动完成后的回调函数的接收者
oncompleteparams:物体移动完成后的回调函数的参数
ignoretimescale:忽略时间缩放,时间缩放是Time.timeScale = 0.5f; 默认值为1,如果我们把时间缩放值设置小于1,我们游戏的整体时间都会放慢,就像播放慢镜头一样,如果设置ignoretimescale为true,无论我们时间怎么缩放,对物体的移动都没有影响。
只要我们了解了itween的其中一个使用方式,其他的都是一样的做法。
我们可以做的动画有:位移,旋转,缩放,音量渐变,摄像机淡入淡出,颜色的渐变,物体振动等很多有用的动画。
2. 数值过渡

iTween.ValueTo(gameObject, iTween.Hash(
"from", y,
"to", toY,
"easetype", easeType,
"loopType", loopType,
"onupdate", "onupdate",
"time", tm
));

3. 振动

iTween.ShakePosition(target, new Vector3(, 0.1f, ), );

4. 按路径移动

var path = GameObject.Find("Plane").GetComponent("iTweenPath").GetPath("myPath");
iTween.MoveTo(gameObject, iTween.Hash(//"position", Vector3(0, 0, 0),
"path", path,
"time", ,
"easetype", "linear"));

以下是iTween插件各方法的大致用法,每个方法都有简单传参和Hashtable定制两种用法,Hashtable可用iTween.Hash()生成,每个方法所需参数及其功能请参考iTween内部提示。

常用方法简介:
AudioFrom:pitch和volum属性提供的是初始值
audioTo:  pitch和volum属性提供的是终结值
audioUpdate:pitch和volum属性提供的是终结值 此方法用于Update()方法中
stab:播放AudioClip一次,不用手动加载AudioSource组件
CameraFadeAdd:创建一个对象可以模拟摄相机的淡入淡出。
CameraFadeSwap:改变摄相机的淡入淡出背景图(对象为CameraFadeAdd返回对象)
CameraFadeFrom:立即改变摄相淡入淡出的透明度然后随时间返回.amount:当执行淡入淡出时,其透明度的变化速度。(透明度越大,淡入淡出越快,个人认为100为满,如果速度较快,时间较长,渐变效果会在时间快要结束时出现。此方法配合CameraFadeAdd使用,只有在CameraFadeAdd前提下,才可以进行淡入淡出操作。此方法为从CameraFadeAdd返回的对象出淡出到原来的界面。
CameraFadeTo:随时间改变摄相机淡入淡出透明度,此方法为从本界面淡入到CameraFadeAdd返回的对象
ColorFrom:即刻改变对象的颜色值然后随着时间改变其回原来的颜色(总的来说,就是对GUIText和GUITexture的颜色的淡入淡出效果)。Color:此属性代表对象变化初始值。与audioFrom有异曲同工之效
ColorTo:随着时间改变对象的颜色组。同上例一样。Color:此属性代表对象变化最终值,与audioTo有异曲同工之效
(注意,ColorFrom和ColorTo还有后面的ColorUpdate方法的NamedColorValue属性,有一些对象不具有NamedColorValue里的属性,运行时会有提示)
ColorUpdate:跟ColorTo类似,但花销的成本较少,此方法在Update方法中被调用
FadeFrom:即刻改变对象的的阿尔法值,然后随着时间将其阿尔法值变回原值。如果对象上有挂载
  a Light, GUIText or GUITexture这些组件,这些组件将成为被执行的对象。
注:阿尔法值可以粗略理解为对象的透明度,值越小,透明度越大。这里的 alpha或者 amount 是变化初值

FadeTo:同上,alpha或amount是变化终值。
FadeUpdate :同FadeTo类似,在Update()方法中调用,提供时刻改变属性值的环境。不局限于 EaseType
LookFrom:即刻旋转物体让其看提供的Vector3或都Transfrom,然后随时间旋转回原来的角度值
注:物体的脸部一般以本地坐标(即物体坐标)的Z轴,脸部朝向方法,即Z轴指向方法。
LookTo:随时间旋转物体让其脸部朝向所提供的Vector3或Transform位置。
LookUpdate:同LookTo类似,在Update()方法中调用。
MoveAdd:随时间改变游戏对象的位置(原理还有点蒙,感觉跟MoveBy有点像)amount:是改变物体位置的一个值,不是目标位置的坐标。
MoveBy:增加提供的坐标到游戏对象的位置
MoveFrom:立即改变游戏对象的位置为提供的,然后随时间改变游戏对象位置到初始位置
属性:movetopath:Boolean值 ,是否自动将物体置于Ptah的起始点,默认值为真
Path:目标文件可用路径编缉器获得
PunchPosition:对物体的位置添加一个摇晃的力,使其摇晃最终归于原来的位置 其晃动大小和方法由提供的amount(Vector3)决定(方法由Vector3的x,y,z共同决定,晃动大小,由各个方法的值的大小决定)

PunchRotation:对物体的旋转添加一个摇晃的力,使其旋转最终归于初始值。其旋转角度大小和方向由提供的Vector3决定,建议用单轴而不是整个Vector3,例如(0,1,0)是绕Y轴旋转,角度大小由Vector3Y轴值大小决定

PunchScale:对物体的大小比例添加一个摇晃的力,使其大小比例变化最终归于初始值。其大小比例变
化方向和大小由提供的Vector3决定。例如(0,1,0)是在Y轴方向对物体大小变化(即变化物体的高)
,大小由该方向的值大小决定
PutOnPath :根据提供的百分比将游戏物体置于所提供路径上(1为百分之百)。
PointOnPath:根据提供的百分比返回一条路径上的Vector3的位置
RectUpdate:返回一个RECT在提供的两个值之间,大小变化根据提供的速度
Vector3Update:返回一个Vector3在提供的两个值之间,大小变化根据提供的速度
Vector2Update:返回一个Vector3在提供的两个值之间,大小变化根据提供的速度
FloatUpdate:返回一个float在提供的两个值之间,大小变化根据提供的速度
RotateAdd:对游戏物体的旋转角度随着时间增加所提供的欧拉角(顺时针旋转。Vector3三个值解析:
X,Y,Z各代表围绕哪个轴转动。其转动角度就是X,Y,Z、的值的大小。amount:欧拉角大小)
RotateBy:把提供的值乘以360,然后随着时间旋转游戏物体的角度按计算得的值。例 如(0,1,0)就是绕Y轴旋转360度。 顺时针旋转
RotateFrom:立即改变游戏物体角度的欧拉角,然后随着时间旋转回原来的角度,属性提供的欧拉角为变化初始值
RotateTo:旋转游戏物体角度到我们所提供的欧拉角角度。属性提供的欧拉角为变化终结值
RotateUpdate:跟RotateTo类似,该方法在Update中被调用,提供一个可改变属性值的环境。不用局限EaseType
ScaleAdd:随着时间根据提供的amount(Vector3)增加游戏物体的大小
ScaleBy:随着时间变形游戏物体,游戏物体最终变形大小由我们提供的amount(Vector3)值决定 算法:
最终变形大小=游戏物体初始的sacle * 我们提供的 amount值
ScaleFrom:立即改变游戏物体的比例大小,然后随时间返回游戏物体原本的大小。amount:为物体变形的初始大小
ScaleTo:随着时间改变物体的比例大小到我们提供的Scale大小(scale值)
ScaleUpdate:跟ScaleTo类似,此方法用于Update中,提供可改变属性值的环境 ,不用局限于EaeType
ShakePosition:根据提供的amount衰减其值随机摇动游戏物体的位置,其晃动大小和方向由提供的amount(Vector3)决定(方向根据Vector3随机,晃动大小,由各个方向的值的大小决定)
ShakeRotation:根据提供的amount衰减其值随机摆动旋转游戏物体的角度 。Vector3三个值解析:X,Y,Z各代表围绕哪个轴旋转。其转动角度就是X,Y,Z、的值的大小
ShakeScale:根据提供的amount衰减其值随机摆动改变游戏物体的大小。其大小比例变化方向和大小由提供的Vector3决定。例如(0,1,0)是在Y轴方向对物体大小变化(即变化物体的高),大小由该方向的值大小决定
Pause:停止iTween 如果一个iTween以ignoreTimeScale定制且设为True停止工作。 参考不同参数Pause的说明。
Stop:停止iTweens,和Pause一样,不同的参数有不同作用。
Stop By Name:停止指定名字的iTween

ValueTo:返回一个插值在两件值之间的回调函数的值(作用不明)
(Returns a value to a callback method interpolated between the supplied 'from' and 'to' 
values for application as desired. Requires an 'onupdate' callback that accepts the same 
type as the supplied 'from' and 'to' properties.)