Unity---DOTween插件学习(2)---设置参数、Ease曲线、回调函数、动画控制函数

目录

  • 6、Set设置参数
  • 7、Ease曲线
  • 8、回调函数
  • 9、动画控制函数

本文及系列参考于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();

原文地址:https://www.cnblogs.com/Fflyqaq/p/10867299.html

时间: 2024-10-11 11:52:44

Unity---DOTween插件学习(2)---设置参数、Ease曲线、回调函数、动画控制函数的相关文章

unity Dotween插件的简单介绍及示例代码

unity里面做插值动画的插件有许多,比较常见的有itween.hotween.dotween.根据大家的反馈和实际体验来说,dotween插件在灵活性.稳定性.易用性上都十分突出.这里简单介绍下它的用法,并在后文做了一些效果示例,还是不错的. 所谓"插值动画",顾名思义就是在两个值中插入其他的值来实现动画.原理非常简单,比如想让某个物体从A地到达B地,我们只知道A和B的坐标,插值动画就可以根据"缓动函数"确定A.B间的其他值,来实现物体从A到B的"运动过

Node.js学习笔记(3)——关于回调函数和函数的回调

说明:本人是node.js的初学者,尝试向别人解释这是怎么回事是自我学习的一个好方法.如果你发现有些地方并不是那么正确,欢迎提出来让我知道以便修正,共同进步,谢过^_^.       欢迎交流,本人微博:http://weibo.com/bitsea  很多地方都涉及到函数的回调,在这里简单说一下什么是函数的回调. 回调函数就是回来再调用的函数. 基于js的单线程执行代码的风格,回调是必须的选择.也可以说是一种不得已而为之的选择吧,回调无疑增加了代码的复杂性,使其变得难读.难理解,难维护.但是,

设计一个函数,它接受不定数量的参数,这是参数都是函数。这些函数都接受一个回调函数作为参数,按照回调函数被调用的顺序返回函数名

function acceptFuncs() { var fnNames = []; //定义数组字面量,用来保存函数名称 for (var i = 0; i < arguments.length; i++) { //for循环检测接收到的每个参数是否为函数,是则传递回调函数给它,最后所结果压入数组中 if (typeof arguments[i] === "function") { fnNames.push(arguments[i](callback)); } } for (v

OpenCV学习3-----利用鼠标、键盘回调函数实现标定人体关节点

最近做实验,需要一些人体关节点的ground truth,需要自己手动标定,于是尝试使用OpenCV的鼠标键盘回调函数实现. 期间遇到不少问题,记录一下. 首先就是鼠标回调函数注册, namedWindow("calibration"); setMouseCallback("calibration", onMouse, &photo); 其中onMouse为处理鼠标事件的函数.里面需要用的一个索引selectIndex来标记当前鼠标选择的关节点是哪一个.然后

JS学习:第二周——NO.1回调函数

[回调函数] 定义:把一个函数的定义阶段,作为参数,传给另一个函数: 回调函数调用次数,取决于条件: 回调函数可以传参: 回调函数可以给变this指向,默认是window: 回调函数没有返回值,forEach也没有返回值: /*Function.prototype.call=function(context){ 1)把this这个实例中的this字符串改成了call的第一个参数:如果this这个实例中,没有this字符串,就不用改了:    2)this这个实例立即执行: this();}*//

Unity iGUI 插件学习

在这里,简单给大家介绍一个功能强大的unity的UI插件-iGUI 相信不少的童鞋听说过这个插件,但是由于该插件在unity 的Asset Store上是需要money的,所以这就避免不了让一些好学的同学拿不到这个功能强大又好用的UI插件,今天在这里不仅简单的向大家说明iGUI的使用方法,而且还会提供该插件的下载地址: http://download.csdn.net/detail/u014076894/8644081 首先我们打开上面的网址进行下载,拿到这个插件(. unitypackage)

FlexSlider插件的详细设置参数

$(window).load(function() { $('.flexslider').flexslider({ animation: "fade", //String: Select your animation type, "fade" or "slide"图片变换方式:淡入淡出或者滑动 slideDirection: "horizontal", //String: Select the sliding directio

FlexSlider插件的详细设置参数 http://www.woothemes.com/flexslider/ -----幻灯片插件

$(window).load(function() { $('.flexslider').flexslider({ namespace: 'flex-', //控件的命名空间,会影响样式前缀 animation: "slide", //String: Select your animation type, "fade" or "slide"图片变换方式:淡入淡出或者滑动 slideDirection: "horizontal"

JAVA入门学习: 方法参数的传递(函数传参问题)

引言:我们知道C++中拥有两种参数传递方式, 值调用和引用调用. 有些程序员认为JAVA程序设计语言对对象采用的是引用调用,实际上,这种理解是不对的. 由于这种误解存在普遍性,所以下面将阐述一下这个问题. 所以用一段简单的代码来阐述一下这个问题: 1 //如果方法参数是的输入时引用,那么我们将交换两个指针(即引用) 2 public static void swap(Employee x, Employee y) 3 { 4 Employee temp = x; 5 x =y; 6 y = te