Unity---DOTween插件学习(2)---设置参数、Ease曲线、回调函数、动画控制函数
本文及系列参考于Andy老师的DOTween系列
欢迎大家关注Andy老师
6、Set设置参数
在Unity中添加一个Cube,并挂载这个脚本
SetLoops():设置循环
//参数1.循环次数(-1表示无限循环)
//参数2.循环方式
//Yoyo:来回运动
//Restart:重新开始(运动完马上返回原来状态再接着运动)
//Incremental:一直朝着一个方向运动
transform.DOMove(Vector3.one, 2).SetLoops(-1,LoopType.Yoyo);
SetAutoKill():设置自动杀死动画
transform.DOMove(Vector3.one, 2).SetAutoKill(true);
From():反向
//from(反向运动,从目标点运动回起始点)
//true为增量运动,false则为目标值运动。无参默认为目标值运动
transform.DOMove(Vector3.one, 2).From(true);
SetDelay():设置延时执行
transform.DOMove(Vector3.one, 2).SetDelay(2);
SetSpeedBased():设置动画以速度为基准
//参数2.原本表示持续时间的参数,就变为了每秒的速度
transform.DOMove(Vector3.one*5, 2).SetSpeedBased();
SetRelative():设置为增量运动
transform.DOMove(Vector3.one * 5, 2).SetRelative(true);
SetId():设置动画ID
//设置ID,可以用于之后再调用
transform.DOMove(Vector3.one * 5, 2).SetId("id");
DOTween.Play("id");
SetRecyclable():设置动画是否可回收
//设置是否可回收
//为true的话,动画播放完会被回收,缓存下来,不然播完就直接销毁
transform.DOMove(Vector3.one * 5, 2).SetRecyclable(true);
SetUpdate():设置动画的帧函数
//设置动画的帧函数
//第一个参数 UpdateType :选择使用的帧函数
//UpdateType.Normal:更新每一帧中更新要求。
//UpdateType.Late:在LateUpdate调用期间更新每一帧。
//UpdateType.Fixed:使用FixedUpdate调用进行更新。
//UpdateType.Manual:通过手动DOTween.ManualUpdate调用进行更新。
//第二个参数:为TRUE,则补间将忽略Unity的Time.timeScale
transform.DOMove(Vector3.one * 5, 2).SetUpdate(UpdateType.Fixed);
7、Ease曲线
在Unity中添加一个Cube,并挂载这个脚本
SetEase():设置曲线
点击这里查看Ease的各种枚举类型的效果动画
//参数1 Ease的各种枚举类型
//参数2 Amplitude(振幅):就是移动次数,起始点移动到目标算移动一次,再移动回来移动两次
//参数3 period 值的范围是 -1~1
//值 > 0时,为活动范围的衰减值,活动范围会由大变小
//值 = 0时,就是均匀的在起始坐标和目标坐标之间运动
//值 < 0时,会施加一个向目标坐标的一个力,活动范围一点点增大,最后逼近目标点
//这两个参数只对Flash, InFlash, OutFlash, InOutFlash这四种曲线有用,其他的曲线起作用的就只有Ease枚举参数
transform.DOMove(Vector3.one * 5, 2).SetEase(Ease.InBack,3,0);
Animation设置曲线:
public AnimationCurve curve;
private void Start()
{
transform.DOMove(Vector3.one * 2, 1).SetEase(curve);
//AnimationCurve 横轴是时间, 不过不是具体的时间,而是时间比例
//AnimationCurve 纵轴是倍数
//假设纵轴的值为v,传入DOMove的第一个参数endValue是e,起始点坐标是s
//此物体最后动画结束时的实际坐标即为 v * (e - s)+s
}
以回调函数为参数:
private void Start()
{
transform.DOMove(Vector3.one * 5, 2).SetEase(EaseFun);
}
//返回值是运动距离的百分比 值应为0~1之间,最后的值需为1,不然停留的位置不会是目标位置
private float EaseFun(float time, float duration, float overshootOrAmplitude, float period)
{
return time / duration;
}
8、回调函数
在Unity中添加一个Cube,并挂载这个脚本
1.动画完成回调
transform.DOMove(Vector3.one, 2).OnComplete(() => { });
2.完成单个循环周期时触发
transform.DOMove(Vector3.one, 2).OnStepComplete(() => { });
3.动画被杀死时回调
transform.DOMove(Vector3.one, 2).OnKill(() => { });
4.动画播放时回调,暂停后重新播放也会调用
transform.DOMove(Vector3.one, 3).OnPlay(() => { });
5.只在第一次播放动画时调用,在play之前调用
transform.DOMove(Vector3.one, 2).OnStart(() => { });
6.动画暂停时回调
transform.DOMove(Vector3.one, 2).OnPause(() => { });
7.动画回退时回调
//以下情况会被调用
//使用DORestart重新播放时
//使用Rewind倒播动画完成时
//使用DOFlip翻转动画完成时
//使用DOPlayBackwards反向播放动画完成时
transform.DOMove(Vector3.one, 2).OnRewind(() => { });
8.帧回调
transform.DOMove(Vector3.one, 2).OnUpdate(() => { });
9.在路径动画时,改变目标点时的回调,参数为当前目标点的下标
transform.DOMove(Vector3.one, 2).OnWaypointChange((value) => { });
9、动画控制函数
在Unity中添加一个Cube,并挂载这个脚本
1.播放
transform.DOPlay();
2.暂停
transform.DOPause();
3.重播
transform.DORestart();
4.倒播,此方法会直接退回起始点
transform.DORewind();
5.平滑倒播,此方法会按照之前的运动方式从当前位置退回起始点
transform.DOSmoothRewind();
6.杀死动画
transform.DOKill();
7.翻转补间的方向和Rewind效果有点像
transform.DOFlip();
8.跳转时间点
//第一个参数跳转的时间点,第二个参数是跳转后是否播放动画
transform.DOGoto(1.5f, true);
9.反向播放动画
//反向播放动画,在动画播放到一半时执行,会退回起始点,在一开始执行看不到效果是因为,物体本身就在起始点
transform.DOPlayBackwards();
10.正向播放动画
transform.DOPlayForward();
11.TogglePause
//当暂停时,执行就继续播放,播放时,执行就暂停
transform.DOTogglePause();
Unity---DOTween插件学习(2)---设置参数、Ease曲线、回调函数、动画控制函数的更多相关文章
- FlexSlider插件的详细设置参数 http://www.woothemes.com/flexslider/
http://www.woothemes.com/flexslider/ FlexSlider插件的详细设置参数 $(window).load(function() { $('.flexslider' ...
- Mybatis 插件实现动态设置参数
原文地址:Mybatis 插件实现动态设置参数 博客地址:http://www.extlight.com 一.背景 笔者在搭建架构时,通常会利用泛型对 dao 层 和 service 层公共的代码(增 ...
- unity Dotween插件的简单介绍及示例代码
unity里面做插值动画的插件有许多,比较常见的有itween.hotween.dotween.根据大家的反馈和实际体验来说,dotween插件在灵活性.稳定性.易用性上都十分突出.这里简单介绍下它的 ...
- Node.js学习笔记(3)——关于回调函数和函数的回调
说明:本人是node.js的初学者,尝试向别人解释这是怎么回事是自我学习的一个好方法.如果你发现有些地方并不是那么正确,欢迎提出来让我知道以便修正,共同进步,谢过^_^. 欢迎交流,本人微 ...
- JS学习:第二周——NO.1回调函数
[回调函数] 定义:把一个函数的定义阶段,作为参数,传给另一个函数: 回调函数调用次数,取决于条件: 回调函数可以传参: 回调函数可以给变this指向,默认是window: 回调函数没有返回值,for ...
- Node.js 学习(四)Node.js 回调函数
Node.js 异步编程的直接体现就是回调. 异步编程依托于回调来实现,但不能说使用了回调后程序就异步化了. 回调函数在完成任务后就会被调用,Node 使用了大量的回调函数,Node 所有 API 都 ...
- OpenCV学习3-----利用鼠标、键盘回调函数实现标定人体关节点
最近做实验,需要一些人体关节点的ground truth,需要自己手动标定,于是尝试使用OpenCV的鼠标键盘回调函数实现. 期间遇到不少问题,记录一下. 首先就是鼠标回调函数注册, namedWin ...
- 正则表达式的方法:replace,match,test(replace参数可以是回调函数)
1.replace: 作用对象:字符串 功能:用于替换字符串中的某些字符 参数:(1)正则表达式 (2)要替换的字符串 或者 回调函数 var str="1 2 3 4 5 6 7 8 9& ...
- 【Dart学习】-- Dart之匿名方法 & 回调函数 & 闭包
一,匿名方法定义 (参数1,参数2,....){ 方法体... return 返回值 } 二,匿名方法特性 可赋值给变量,通过变量进行调用 可在其他方法中直接调用或传递给其他方法 void main( ...
随机推荐
- HihoCoder1339 Dice Possibility(概率DP+母函数)
时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 What is possibility of rolling N dice and the sum of the numb ...
- 2017-2018-1 20179203 《Linux内核原理与分析》第六周作业
攥写人:李鹏举 学号:20179203 ( 原创作品转载请注明出处) ( 学习课程:<Linux内核分析>MOOC课程http://mooc.study.163.com/course/US ...
- Oracle中spool命令实现的两种方法比较
---恢复内容开始--- 要输出符合要求格式的数据文件只需在select时用字符连接来规范格式.比如有如下表 SQL>; select id,username,password from myu ...
- BZOJ5362: [Lydsy1805月赛]quailty 算法
BZOJ5362: [Lydsy1805月赛]quailty 算法 https://lydsy.com/JudgeOnline/problem.php?id=5362 分析: 题意即求一个最小基环树森 ...
- 麻省理工《C内存管理和C++面向对象编程》笔记---第一讲:认识C和内存管理
最近一年都在用.net和Java,现在需要用C了.昨天看到博客园首页的麻省理工开放课程,就找来看看,正好复习一下.这门<C内存管理和C++面向对象编程>不是那种上来就变量,循环的千篇一律的 ...
- mesos的zookeeper变更
采用rpm方式安装你了mesos,碰到zookeeper(采用了cloudera的zookeeper)的IP地址变化了,肿么办? 在master机器中: /etc/mesos/zk进行编辑修改zk路径 ...
- POJ1958:Strange Towers of Hanoi
我对状态空间的理解:https://www.cnblogs.com/AKMer/p/9622590.html 题目传送门:http://poj.org/problem?id=1958 题目要我们求四柱 ...
- 随机数 while循环 do while循环 for循环
1.随机数 arc4random() 返回一个随机数 如果要随机[a,b]范围内的随机数 arc4random() % (b - a + 1) + a ; 2.break 跳出本次循 ...
- Dubbo注册中心的四种配置方式详解
Dubbo目前支持4种注册中心,(multicast,zookeeper,redis,simple) 推荐使用Zookeeper注册中心. 一.Multicast注册中心 不需要启动任何中心节点,只要 ...
- Java中“分号”引起的陷阱
对于这类问题而言,难度不大,多半是由于我们有误操作引起的.但在查找问题所在的时候我们有可能需要花费一番功夫了. 实例一: package com.yonyou.test; /** * 测试类 * @a ...