[Toc]

本文及系列参考于Andy老师的DOTween系列 欢迎大家关注**Andy老师**

10、获取数据

类方法

返回所有暂停的动画,没有则返回null

var list = DOTween.PausedTweens();

返回所有真正播放的动画,没有则返回null

var list = DOTween.PlayingTweens();

获取给定ID的数组

var list = DOTween.TweensById("id", true);

//第一个参数是动画的ID

//第二个参数是是否只收集正在播放的动画

返回给定对象上播放或缓存的动画数组

var list = DOTween.TweensByTarget(transform, true);

//第一个参数是播放动画的对象

//例如:transform.DOMove(Vector3.one, 2); 第一个参数就传入transform

//material.DOColor(Color.White, 2); 第一个参数就传入材质对象material

//第二个参数是是否只收集正在播放的动画

检测传入的对象是否有动画在活动

bool isTween = DOTween.IsTweening(transform);

//第一个参数为检测的对象

//第二个参数为是否检测动画在播放状态

//为true时,给定对象在播放状态时 返回true

//为false时,只检测给定对象是否有动画(在pause状态时也算)有则返回true

正在播放的动画的总数,目前处于延迟播放状态的动画也算

int allPlaying = DOTween.TotalPlayingTweens();

**实例方法** Tweener _tweener = transform.DOMove(Vector3.one, 2);

表示动画已经执行时间的属性,可读可写

_tweener.fullPosition = 1;

表示动画已经执行的次数

_tweener.CompletedLoops();

获取动画的延迟时间

_tweener.Delay();

获取动画的持续时间

//参数为true 表示计算循环的时间,无限循环为Infinity

_tweener.Duration(false);

动画已播放的时间

//参数为true 表示计算循环的时间

_tweener.Elapsed();

返回动画进度的百分比

//起始点为0 目标点为1 当yoyo循环模式下,值会从0变到1再从1变到0

_tweener.ElapsedDirectionalPercentage();

返回动画区间已用的百分比

//单次循环的数值为0到1

//参数为 是否包含循环 为true时 返回值是循环总区间的已用百分比 若为无限循环 返回值为0

_tweener.ElapsedPercentage(true);

动画是否在活动

_tweener.IsActive();

是否是反向动画

_tweener.IsBackwards();

动画是否完成

_tweener.IsComplete();

是否以初始化

_tweener.IsInitialized();

是否正在播放

_tweener.IsPlaying();

返回循环次数,无限循环为Infinity

_tweener.Loops();

11、携程

private Tweener _tweener;

private void Start()

{

_tweener = transform.DOMove(Vector3.one, 2);

StartCoroutine(Wait());

}

private IEnumerator Wait()

{

yield return ;

}

等待动画执行完

yield return _tweener.WaitForCompletion();

等待指定的循环次数

//参数为执行次数,等待传入的循环次数后,继续执行

//若是传入的次数大于动画的循环次数 则在动画结束时继续执行

yield return _tweener.WaitForElapsedLoops(2);

等待动画被杀死

yield return _tweener.WaitForKill();

等待动画执行指定时间

//参数为时间,动画执行传入的时间之后或动画执行完毕,继续执行

yield return _tweener.WaitForPosition(0.5f);

等待动画回退

//以下情况会继续执行函数

//使用DORestart重新播放时

//使用Rewind倒播动画完成时

//使用DOFlip翻转动画完成时

//使用DOPlayBackwards反向播放动画完成时

yield return _tweener.WaitForRewind();

等待Start执行后继续执行

yield return _tweener.WaitForStart();

12、路径动画

DOPath的一个使用小案例 在面板中创建如图的Cube,并如图摆放

给最上面那个Cube挂载脚本,把下面所有Cube赋值给脚本属性。

public class CubeText : MonoBehaviour

{

public Transform[] pointList;

private void Start()

{

var position = pointList.Select(u => u.position).ToArray();

transform.DOPath(position, 5, PathType.Linear).SetOptions(true).SetLookAt(new Vector3(0, 0, 0);

}

}

路径动画中DOPath的六个参数

//参数1 waypoints: 是提供路径上点的坐标,需要按顺序添加进数组

//参数2 duration:路径动画的整体持续时间

//参数3 pathType:路径类型(就是点于点之间路径连线的生成方式)

//Linear:直线

//CatmullRom:曲线

//参数4 pathModel: 路径模式(用于确定正确的LookAt方向)

//Ignore:忽略此参数和设置的LookAt参数

//Full3D:在3d场景下,代表物体可以看向任何方向

//TopDown2D:代表物体只能上下旋转,看向物体

//Sidescroller2D:代表物体只能左右旋转看向物体

//参数5 resolution:路径分辨率(默认10),代表路径点之间的曲线由多少个点构成,也就是点越多,曲线就越圆,此参数在直线路径类型下无效

//参数6 gizmoColor:在Scene视图中,生成的路径曲线的颜色

SetOptions(closePath, lockPosition, lockRotation)

//参数1 closePath:是否是封闭路径,设为true的话,会形成闭环,最后运动回起点

//参数2 lockPosition:锁定位置,参数为轴向,例如,填入AxisConstraint.X的话,横向的位移将被锁定,物体只能在其他方向上移动

//参数3 lockRotation:锁定旋转,参数为轴向,和锁定位置同理,锁定的轴向不能旋转

SetLookAt()

//参数1 closePath:是否是封闭路径,设为true的话,会形成闭环,最后运动回起点

//参数2 lockPosition:锁定位置,参数为轴向,例如,填入AxisConstraint.X的话,横向的位移将被锁定,物体只能在其他方向上移动

//参数3 lockRotation:锁定旋转,参数为轴向,和锁定位置同理,锁定的轴向不能旋转

//参数4 lookAhead参数:取值范围0-1

0:看向路径的前方 0.99:看向路径的后方 (1)closePath为false (运动最后,物体的朝向移动是路径的运动方向的前方) lookAhead = 0:目标会沿着路径看向前方 lookAhead != 0:目标会按照参数,决定开始运动时的朝向,但是运动期间会匀速转动朝向,最后朝向会转回路径前方的朝向

(2)closePath为true(开始时确定方向后就不会变化了) lookAhead = 0:目标会沿着路径看向前方 lookAhead >0 && lookAhead <1:一直保持开始时的方向(即如上图所示) lookAhead = 1:这个时候,SetLookAt没有效果,即物体不会改变朝向

这里所说的朝向是相对于运动路径的朝向

路过的大神给出的学术性的解释: lookAhead 参数的意思就是 看前看的偏移量

假设整个路径normalize. 即开始点为0,结束点为1. 走到路程的一半即为0.5.

所以如果lookAhead = 0.5 时, 假设当前Transform行走进程到 0.1的位置,则会 LookAt 行走进程 0.6的位置.

如果closePath=true, 则 lookAtPercent = Mathf.Repeat(movePercent + lookAhead, 1); 否则closePath=false, 则 lookAtPercent = Mathf.Clamp01(movePercent + lookAhead);

dotween路径移动_Unity---DOTween插件学习(3)---获取数据、协程、路径动画相关推荐

  1. 自己做一个table插件 (一)Ajax获取数据后动态生成table

    今天我给大家带来一个简单的JQ插件,Ajax获取数据后动态生成table.当然,有这种功能的插件有很多.著名的有DataTable.JqGrid--它们虽然功能丰富,成熟,拿来做二次开发是一个不错的选 ...

  2. python线程进程协程面试_Python学习经验之谈:关于协程的理解和其相关面试问题...

    都知道Python非常适合初学者学习来入门编程,昨天有伙伴留言说面试了Python岗位,问及了一个关于协程的问题,想了想还是跟大家出一篇协程相关的文章和在Python面试中可能会问及的相关面试问题.都 ...

  3. java获取当前项目相对路径_怎样在JAVA文件中获取该项目的相对路径

    1.基本概念的理解 绝对路径:绝对路径就是你的主页上的文件或目录在硬盘上真正的路径,(URL和物理路径)例如: C:\xyz\test.txt 代表了test.txt文件的绝对路径.http://ww ...

  4. go语言学习(5)协程

    goroutine的定义 1.任何函数只需加上go就能送给调度器运行 2.不需要在定义时区分是否是异步函数 3.调度器在合适的点进行切换 4.使用-race来检测数据访问冲突goroutine可能的切 ...

  5. golang 学习 (八)协程

    一: 进程.线程 和 协程 之间概念的区别:        对于 进程.线程,都是有内核进行调度,有 CPU 时间片的概念,进行 抢占式调度(有多种调度算法)    (补充: 抢占式调度与非抢占(轮询 ...

  6. Go学习笔记 -- 通道实现协程等待

    文章目录 前言 方法一:睡眠等待 方法二:通道 什么是通道? 通道的特性 什么是非缓冲通道 什么是缓冲通道 通道的简单使用 非缓冲通道 缓冲通道 小心死锁 使用通道实现协程等待 前言 上一次简单了解了 ...

  7. Kotlin学习:5.1.协程是什么?

    协程是什么? 一.什么是协程? 1.解决的问题? 2.基本实现 3.挂起和恢复 4.优势 5.协程的两部分 6.Dispatchers(调度器) 7.任务泄露 8.结构性并发 9.CoroutineS ...

  8. html中css路径和xpath路径,6.1 HTML的简单介绍和快速获取XPath和CSS路径

    Web UI 自动化其实就是在页面元素,所以在真正进入页面元素操作之前,我们先认识下我们后面会用到的一些HTML相关知识. HTML的简单介绍 什么是HTML HTML(Hyper Text Mark ...

  9. linux 下获取程序的绝对路径

    环境: linux/unix , c++, gcc 有时候我们需要获得程序的绝对路径.功能类似于 pwd. 系统提供了一个 getcwd() 函数,但获得的不一定是程序的绝对路径. 下面的代码实现了获 ...

最新文章

  1. Junit中error和failure区别
  2. 一行代码集成带负数的自定义键盘
  3. CentOS下Docker安装
  4. STM32的串口函数_库函数USART_SendData问题和解决方法--硬件复位导致第一个字节丢失
  5. linux进程---exec族函数(execl, execlp, execv, execvp, )解释和配合fork的使用
  6. bzoj 1064: [Noi2008]假面舞会(DFS)
  7. (转)在FlashBuilder里的ActionScript工程中使用Flash CS5中的类 fl.controls库
  8. hbase 使用lzo_【hbase】Hbase最佳实践
  9. 直播电商源码,无加密
  10. 计算机ps基础考试题,2014计算机一级考试PS及基础模拟试题
  11. 把视频裁剪成图片Python
  12. 整型数据分类及其取值范围
  13. 加密的压缩包文件如何解压
  14. audio的播放没有声音的问题
  15. Tomcat脚本一键装机
  16. 什么是promise,promise的使用及实现
  17. 使用理想低通滤波器对图像进行处理显示
  18. Throttling - Django REST framework
  19. 电脑d盘和e盘不见了怎么恢复?
  20. 正方体才是素描界的基础,基础决定上层建筑~

热门文章

  1. 有意思的《致招商银行的公开信》行动!
  2. 剑指 Offer II 061. 和最小的 k 个数对
  3. redis解决了分布式系统的session一致性问题
  4. 9-15 redis-trib构建集群
  5. 数据结构与算法之-----图(拓扑排序)
  6. mysql 性能剖析_MySQL服务器性能剖析(一)
  7. 关于WM_NOTIFY的使用方法
  8. c语言指针交换字符串组,c语言 指针交换两个字符串
  9. SDUT OJ 效率至上(线段树)
  10. Java 入门课程视频实战-0基础 上线了,猜拳游戏,ATM实战,欢迎围观