DoTween使用(完整版添加)
下载DoTween##
在Asset Store直接下载,分为付费和免费版本
官方文档 : http://dotween.demigiant.com/documentation.php
对变量进行动画
public float myValue2 = 0;//public Vector3 myValue2 = 0;//public int myValue2 = 0;void Start () {//对变量做一个动画 (通过插值的方式去修改一个值的变化)DOTween.To(() => myValue2, x => myValue2 = x, 10, 2);}
这个myValue2可以是任何类型的变量,10和后面的2分别是需要动画到的值和运动到这个值需要的时间
下面我们用一个按钮来控制面板的移动,实现点击一次从屏幕外面进来,再点击一次让他出去
public RectTransform panelTransform;private bool isIn = false;void Start() {//panelTransform.DOMove(new Vector3(0, 0, 0), 1);//让paneltransfrom从当前位置 动画到 0,0,0的位置 时间为1s (修改的世界坐标)Tweener tweener = panelTransform.DOLocalMove(new Vector3(0, 0, 0), 0.3f);//默认动画播放完成会被销毁//Tweener对象保存这个动画的信息 每次调用do类型的方法都会创建一个tweener对象,这个对象是dotween来管理tweener.SetAutoKill(false);// 把autokill 自动销毁设置为falsetweener.Pause();//暂停动画播放}public void OnClick() {if (isIn == false) {panelTransform.DOPlayForward();//前放isIn = true;}else {//让panel离开屏幕panelTransform.DOPlayBackwards();//倒放isIn = false;}}
这个需要注意,ui和3d物体不一样,他的移动是控制RectTransform,而且ui的坐标都是局部坐标,这里我们因为dotween每次都会自动销毁,对我们做返回不好,所以使用SetAutoKill(false)不时它销毁,但是如果放在update方法的话每次执行都会生成一个动画存放在tweener物体身上,因为不会自动销毁所以我们需要将它放在start里面生成,然后控制动画向前播放和向后播放就可以了。
物体的移动和旋转
移动的方法用法类似只有两个常用的分别是DOMove()和DOLocalMove(),主要是对世界坐标和局部坐标区分的,当然你也可以对单个轴进行动画,比如上面的平移操作可以使用DOLocalMoveX();
旋转常用的就是DORotate(),DOLocalRotate()旋转三维向量
DORotateQuaternion()旋转四元数
游戏中常用的DOLookAt(),比自己写差值方便很多,具体参数可以查看官方例子
改变物体大小
DOScale是设置大小的方法
transform.localScale = Vector3.zero;
transform.DOScale(1, 1f);
屏幕震动效果
例如对相机进行操作
void Start () {//参数分别是震动时间和相机位移的向量,震动次数和随机方向,比如我不想让前后动,就把z轴设置为0transform.DOShakePosition(1,new Vector3(3,3,0),10,90);}
抖动效果,和震动类似但是可控参数更多
//第一个参数 ,抖动的方向,例如我这里是从当前位置向上抖动到1的位置//第二个参数,抖动的时间//第三个参数,抖动的次数//第四个参数 0-1之间的数,代表回弹的幅度,假如为零从最高点当前位置+Vector3.up回来的时候只会回到当前位置,如果为一就会回到当前位置-Vector3.up的位置transform.DOPunchPosition(Vector3.up, 2, 2, 0.5f);
颜色和透明的动画
普通ui的颜色
private Text text;// Use this for initializationvoid Start () {text = GetComponent<Text>();//设置颜色//text.DOColor(Color.red, 2);//设置透明度text.DOFade(1, 3);}
3d物体我们通常使用材质球控制颜色和透明度
Material ma = this.GetComponent<MeshRenderer>().material;ma.DOColor(new Color(0.5f, 0.5f, 0.5f, 1), 2);//注意当前材质的shader必须有_Color属性,如果没有或者名字不对会报错,需要给其他的赋值//例如:ma.DOColor(new Color(0.5f, 0.5f, 0.5f, 1),"_TintColor", 2);//不知道名字的可以通过编辑shader查看
Blend方法
这个主要是用在两种同时需要的相同动画进行融合效果
例如
下面这种情况下dotween会忽略第一行动画效果直接执行最终的动画效果
transform.DOMove(new Vector3(0,1,1),2);
transform.DOMove(new Vector3(1,2,0),2);
这时候就需要用到我们的Blend动画融合,DOBlendableMoveBy()这个方法会将这两个动画的参数进行融合计算出最终的坐标当成一个动画进行融合,当然你也可以通过计算两个点的向量计算最终点的位置使用DOMove()方法进行移动.
transform.DOBlendableMoveBy(new Vector3(0,1,1),2);
transform.DOBlendableMoveBy(new Vector3(1,2,0),2);
fromTween方法
void Start () {transform.DOMoveX(5, 3).From();//默认是从当前位置运行到目标位置 加上From()方法以后表示从目标位置移动到当前位置transform.DOMoveX(5, 4).From(true);}
from方式就是和直接使用是反方向的,比如第一句代码不加from方法是想从当前位置运动到5的位置,时间三秒,加上之后就是从5运动到当前位置时间3秒,from方法里面有一个参数,默认为false就是直接从目标位置运动到当前位置,如果改为ture就是相对坐标,也就是从距离5的位置运动到目标位置,假如当前位置是1,就是从1+5也就是6的位置运动到1的位置。
设置动画曲线,也就是动画运动的轨迹,以及动画事件
如图修改SetEase()这个方法里面的Ease即可
OnComplete是动画结束需要触发的事件,可以跟在任何动画后面
void Start () {Tweener tweener = transform.DOLocalMoveX(0, 2);tweener.SetEase(Ease.OutBounce);//动画曲线tweener.OnComplete(OnTweenComplete);//动画结束事件tweener.SetLoops(2);//动画循环次数}void OnTweenComplete() {Debug.Log("动画播放完成了");}
常用的DoTween的生命周期函数
OnComplete();//绑定事件的函数
Onkill();//动画被销毁的时候调用
OnPlay();//动画播放的时候调用
OnPause();//动画暂停的时候调用
OnRewind();//动画被重置的时候
OnStart();//动画被播放的时候(只会调用一次)
连续动画的使用
上面说过如果想执行完第一个之后再执行第二个是不可以使用两行代码直接做动画的,dotween会默认执行第二个动画,所以我们想要再一个动画执行完成之后再执行第二个甚至第三个动画…这样就要使用OnComplete()或者队列保存动画列表挨个执行,一般队列是调用最方便的,OnComplete()在执行超过两个动画的拼接之后会出现莫名错误
private void SizeTween (){Sequence quence = DOTween.Sequence();quence.Append( damageText.rectTransform.DOScale(new Vector3(1.5f,1.5f,1.5f),0.3f));quence.AppendInterval(1);//两个动画之间的延时quence.Append(damageText.rectTransform.DOScale(new Vector3(1, 1, 1), 1));}
dotween详解以及插件使用
Dotween常用方法详解
https://blog.csdn.net/zcaixzy5211314/article/details/84886663
Dotween Path 路径动画使用方法详解
https://blog.csdn.net/zcaixzy5211314/article/details/84988535
MoveEffectTool工具Github地址
https://github.com/BlueMonk1107/MoveEffectTool
Dotween Ease效果演示地址
http://robertpenner.com/easing/easing_demo.html
DoTween使用(完整版添加)相关推荐
- C4.5决策树生成算法完整版(Python),连续属性的离散化, 缺失样本的添加权重处理, 算法缺陷的修正, 代码等
C4.5决策树生成算法完整版(Python) 转载请注明出处:©️ Sylvan Ding ID3算法实验 决策树从一组无次序.无规则的事例中推理出决策树表示的分类规则,采用自顶向下的递归方式,在决策 ...
- 图解GPT-2(完整版)!
↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 译者:张贤, 哈尔滨工程大学,Datawhale原创作者 干货长文,建议 ...
- python学生管理系统教学_Python项目:学生信息管理系统(完整版)
本文是基于上一篇(python项目:学生信息管理系统(初版))进行了完善,并添加了新的功能. 主要包括有: 学生信息管理系统(完整版) 学生信息管理项目,要求带操作界面,并完成每项操作: +----- ...
- python入门必备指南-致Python初学者 Anaconda入门使用指南完整版
打算学习 Python 来做数据分析的你,是不是在开始时就遇到各种麻烦呢? 到底该装 Python2 呢还是 Python3 ? 为什么安装 Python 时总是出错? 怎么安装工具包呢? 为什么提示 ...
- c语言学生信息系统 完整版,C语言 学生信息管理系统(完整版).docx
C语言 学生信息管理系统(完整版) 电子科技大学成都学院 程序综合设计论文 论文题目 学生信息管理系统 学生姓名 魏国 学 号 1340840625 专 业 机械设计制造及其自动化 系(分院) 电子工 ...
- python编程入门指南 代码库在哪下-致Python初学者 Anaconda入门使用指南完整版
打算学习 Python 来做数据分析的你,是不是在开始时就遇到各种麻烦呢? 到底该装 Python2 呢还是 Python3 ? 为什么安装 Python 时总是出错? 怎么安装工具包呢? 为什么提示 ...
- Jedis使用教程完整版
2019独角兽企业重金招聘Python工程师标准>>> 摘要:概述Jedis是Redis官方推荐的Java连接开发工具.要在Java开发中使用好Redis中间件,必须对Jedis熟悉 ...
- 常用经典SQL语句大全完整版--详解+实例 (存)
常用经典SQL语句大全完整版--详解+实例 转 傻豆儿的博客 http://blog.sina.com.cn/shadou2012 http://blog.sina.com.cn/s/blog_84 ...
- elasticsearch6.X 及head插件部署(完整版)
elasticsearch6.X 及head插件部署(完整版) 2018年04月28日 17:22:16 zou79189747 阅读数:3178 版权声明: https://blog.csdn.ne ...
- 【NLP】图解GPT-2(完整版)
译者:张贤, 哈尔滨工程大学,Datawhale原创作者 干货长文,建议收藏阅读,收藏等于看完. 审稿人:Jepson, Datawhale成员, 毕业于中国科学院,目前在腾讯从事推荐算法工作 结构总 ...
最新文章
- 万万没想到! logger.info() 还能导致线上故障?
- linux界面设计论文,毕业设计(论文)-基于linux的云校园桌面虚拟化系统的设计与实现.doc...
- 用html实现网页版的拼图游戏,jQuery实现网页拼图游戏
- 决策树php,决策树模型组合之随机森林与GBDT
- Logistic Regression逻辑回归的损失函数与梯度下降训练
- Facebook官方出品~时域音频分离模型登GitHub热榜
- Windows开启SNMP服务----Win7
- javafx项目_爬虫系列(5):JavaFx界面
- qt中dll缺失以及无法启动程序的正确解决方法
- Java判断隐藏文件
- java ee性能_如何进行Java EE性能测试与调优
- 极品五笔在非管理员权限下无法使用的问题
- 高可靠性——TSN (Time Sensitive Network 时间敏感网络) 802.1Qci 协议介绍
- html万花筒相册旋转效果,jquery css3 3D万花筒图片相册展示特效
- Complementary Trilateral Decoder for Fast and Accurate Salient Object Detection(速读啊)内含与u-shape的对比
- Python实现仿射密码
- android+仿ios画廊,安卓仿ios14主题app
- 方程求解的实验 matlab,matlab 实验四 求微分方程的解
- ReentrantLock 到底锁定了哪个对象了?
- 运行moveit报错