最为一款最常用的插件,今天便向大家介绍这款插件。
废话不多说,开始吧
首先对它基础使用的介绍:移动,旋转,缩放
//移动
transform.DOMove(new Vector3(0, 4, 0), 5,false);
transform.DOLocalMove(new Vector3(0, 5, 0), 1);
第一个参数为你要到达的最终地点,第二个参数为所需的时间。第三个参数为控制是否平滑(true,false)一般系统默认为false,当选择为false时,物体平滑到达,如果为true,则会以一个单位进行移动,即从0直接到1,在蹦到2,每次运动+1,最后造成卡顿的效果,注意如果地点目标数据为小数时,它自动变为整数,即3.1变为3,3.6变为4(四舍五入原则)。第二个方法为物体在子对象的移动。
除此之外还有
//blend
transform.DOBlendableMoveBy(Vector3.one, 1);
这个为混合模式的移动,当存在两个DOBlendableMoveBy以上时,最后的结果会相加,如果使用DOMove的方法则不会,它会使用最新的方法。
------------------------------------------------------------------------------------------分界线
//旋转
transform.DORotate(new Vector3(0, 90, 0), 1,RotateMode.Fast);
transform.DOLocalRotate(new Vector3(90, 0, 0), 2);
transform.DORotateQuaternion(new Quaternion(0, 0, 0,1f), 1);
方法使用同上。当然旋转方式默认为RotateMode.Fast。如果想旋转270度这样的,可以添加第三个参数为RotateMode.FastBeyond360。除此外还有RotateMode.LocalAxisAdd,RotateMode.WorldAxisAdd两种,分别为本地和世界作为轴,但会影响原本的方法。如果你本来的物体已经旋转10度了,如果使用后两者方法,最后的结果就会为旋转100度,即在原来的基础上增加了,而不是到达某值。
------------------------------------------------------------------------------------------分界线
//缩放
transform.DOScale(new Vector3(2, 1, 1), 1);
方法使用同上。不过没有第三个默认参数。
------------------------------------------------------------------------------------------分界线
//朝向
transform.DOLookAt(new Vector3(60, 0, 0), 1);
除此外它们还有分别向x,y,z方向运动的方法,这里就不多阐述,因为方法差不多。
简单的使用以上。接下来有趣的便开始吧。
//punch函数
transform.DOPunchPosition(new Vector3(0, 5, 0), 5, 5, 0.5f);
transform .DOPunchRotation(new Vector3(0, 5, 0), 5, 5, 0.5f);
transform .DOPunchScale(new Vector3(0, 5, 0), 5, 5, 0.5f);
这个函数感觉就是在一定范围内修改物体运动参数(第一个方法就是简单的震动),第一个参数为力的矢量,(即表示方向和力的大小,第二个为持续时间,第三个为震动次数,第四个为改变峰值吧(值为(0-1)),如果取值为0,物体不会向与物体一开始位置相反的运动,即原本坐标为(0,0,0),它就不会往力的相反方向震动,如果取值大于0的,则会忘力的反方向运动,且取值的大小还会决定震动的峰值大小。
(最后我想用这个函数来作为相机震动,但感觉效果不怎么好。- -!)
------------------------------------------------------------------------------------------分界线
//shake函数
transform.DOShakePosition(2, 5, 5, 100, false, true);
transform .DOShakeRotation(2, 5, 5, 100, true);
transform .DOShakeScale(2, 5, 5, 100, true);
这个函数跟上面差不多,不过是运动随机的,即随机向某个方向运动变化,第一个参数为时间(它居然被放在第一位了,呵呵),第二个为力的大小(决定你的变化幅度),第三个为频率,后面几个没有什么用,可有可无,
第一个方法的中第一个bool值为控制是否平滑,第二个为设置是否淡入淡出,其它两个方法则只有控制淡入淡出的。
------------------------------------------------------------------------------------------分界线
然后开始对材质的研究:
DOColor(颜色为,浮动持续时间)
DOColor(颜色为,字符串属性,浮动持续时间)
DOColor(颜色为,int propertyID,浮动持续时间)
DOFade(浮动到,浮动持续时间)
DOFade(浮动到,字符串属性,浮动持续时间)
DOFade(浮动到,int propertyID,浮动持续时间)
DOFloat(浮动到,字符串属性,浮动持续时间)
DOFloat(float to,int propertyID,float duration)
DOGradientColor(渐变为,浮动持续时间)
DOGradientColor(渐变为,字符串属性,浮动持续时间)
DOGradientColor(渐变为,int propertyID,浮动持续时间)
DOOffset(Vector2至,浮动持续时间)
DOOffset(Vector2至,字符串属性,浮动持续时间)
DOOffset(Vector2 to,int propertyID,float duration)
DOTiling(Vector2至,浮动持续时间)
DOTiling(Vector2 to,字符串属性,浮动持续时间)
DOTiling(Vector2 to,int propertyID,浮动持续时间)
DOVector(Vector4至,字符串属性,浮动持续时间)
DOVector(Vector4至,int propertyID,浮动持续时间)
//材质
Material m = transform.GetComponent<MeshRenderer>().material;
m.DOColor(Color.red,"_Color", 2);
对于材质颜色的修改,一定要注意你的材质shader中颜色的名称,一般系统默认为_Color,有些其它的shader中颜色的名称不是这个,所以要在代码中修改,一定要注意。
//透明
m.DOFade(0, 2);
//渐变
m.DOGradientColor(gradient, 2);
剩下就是修改texture的tiling,offset的。操作依旧。
当然它也有混合模式即相加的
DOBlendableColor(颜色为,浮动持续时间)
DOBlendableColor(颜色为,字符串属性,浮动持续时间)
DOBlendableColor(颜色为,int propertyID,浮动持续时间)