前言:
今天来学习一下大名鼎鼎的Unity插件——DoTween。
DoTween
DOTween是一款针对Unity的快速高效、类型安全的面向对象的补间动画引擎,并且对于C#用户做出了很多的优化。
和学习任何东西一样,我们先将它的官网加入收藏,有问题可以随时看文档。
导入资源,预览效果
我这里分享了一个DoTween以及一个示例的Unity场景
我们发现,使用的DOTween插件后,transform居然能够点出DOMove方法,这是因为C#的拓展性,使其和Unity的一些类能产生链接,是不是感觉很神奇。因为这些特性,使我们在使用起来非常简单易懂,想让哪个物体动,就让它的transform组件来调用DOTWeen的方法就可以了。
关于如何实现C#的扩展,可以参考http://www.weblogps.com/post/1
- 位置、旋转、缩放
DOMove:移动位置
to:目标位置
duration:持续时间
snapping:若true,则将过程中所有值对齐成整数。
DORotate:旋转
RotateMode
RotateMode.Fast(默认):旋转最短的路径,不会超过360度。
RotateMode.FirstBeyond360:旋转将会超过360度。
RotateMode.WorldAxisAdd:使用world轴和高级精度模式
RotateMode.LocalAxisAdd:将给定的旋转添加到转换的本地轴上。
duration:持续时间
endValue:结束位置(欧拉角)
DOScale:改变缩放
to:目标缩放
duration:持续时间
DOJump:跳跃
endValue:末位置
jumpPower:跳跃力度
numJumps:跳跃次数
duration:持续时间
snapping:若true,则将过程中所有值对齐成整数。
DOPunchPosition:冲击(对应的还有Rotation的、Scale的)
punch:冲击到的位置
duration:持续时间
vibrato:频率
elasticity:弹性
DOLookAt:旋转目标使朝向某处
towards:朝向
duration:持续时间
axisConstraint:对旋转值添加某个轴向上的约束(默认AxisConstraint.None)
up:定义向上的轴向
DoBlendableMoveBy:设置的值不是最终位置而是相对运动量(效果与setRelative相同),这种方式允许其他的DOBlendableMove在同一个目标上协同工作。
颜色、透明度
颜色:
DOTween改变颜色的主要思路是通过物体材质球的_Color属性来改变颜色,我们可以找到物体的材质球,右击Edit来查看有没有_Color属性,如果没有则需要你收到指定材质的属性。
示例:
标准使用:
GetComponent<MeshRenderer>().material.DOColor(Color.red, 2f);
如果对应材质球没有_Color属性,则我们要手动指定property
GetComponent<MeshRenderer>().material.DOColor(Color.red,"_TintColor", 2f);
以上是物体材质的颜色修改方法
对于UI的话:
Text text = GetComponent<Text>();
text.DOColor(Color.red, 2f);
对于UI中的图片也是一样的道理,很简单。
透明度:
透明度也是通过材质球来修改,很多物体的材质球不支持透明度,建议更换材质球,然后代码里手动指定好属性:
GetComponent<MeshRenderer>().material.DOFade(0,"_TintColor", 2f);
动态渐变:
gradient:倾斜度
我们还可以指定一个渐变关系,让物体去渐变:
创建一个Gradient对象:
public Gradient gradient;
然后在Unity面板里,就可以给它指定颜色。
然后
void Start()
{
GetComponent<MeshRenderer>().material
.DOGradientColor(gradient,2f);
}
就可以让物体按照渐变板信息去渐变。
震动效果
震动效果分为Position、Rotation、Scale三个方向,这里以Rotation为例:
transform.DOShakeRotation(2f, 1, 10, 90);
参数是:持续时间、振幅(震动力度)、频率、随机范围(0~180,最好不要超过90)、snapping(是否对齐到整数)、fadeout(渐出动画)
路径动画
路径动画,使游戏物体沿给定路径移动。
pathType:
Liner–路径是笔直的;
CatmullRom–曲线路程
pathMode:路径模式,该参数主要针对LookAt选项设置。
Ignore(忽略所有的LookAt设置)
Full3D–3D效果中LookAt方向不受限制
Sidescroller2D–lookAt方向只能左右转
TopDown2D–LookAt方向只能上下转
resolution:路径的分辨率(在线性路径中无效);更高的分辨率可以得到更详细的曲线路径,但代价更高。默认值是10,但是如果在路径点之间没有明显的长曲线,那么5的值通常就足够了
gizmoColor.gizmo画线路径的颜色
示例:
void Start()
{
//路径移动
Vector3[] path = new Vector3[] {
new Vector3(0,0,0),
new Vector3(3,32,1),
new Vector3(7,59,37),
new Vector3(0,0,77)};
transform.DOPath(path,5,PathType.CatmullRom,PathMode.Full3D);
}
当然,我们可以直接添加一个组件来做路径——DOTweenPath。
给物体添加组件后,按下Ctrl+Shift来添加路径点,ALT+Shift来删除路径点就可以编辑路径。
这种方法就不需要脚本了,直接一个组件解决:
注意:本文归作者所有,未经作者允许,不得转载