Unity DOTween插件常用方法(一)

文章目录

    • 1.1 控制Api
    • 1.2 动画Api

1.1 控制Api

  1. DOKill

  DOKill表示停止该物体上所有的Tween动画。DOTween可以同时运行多个Tween,如果需要停止所有正在运行的Tween,可以使用这个方法;

还有一种使用场景,即反复打开某一视图,而该视图存在显示动画,如果不先杀死原有动画再执行显示动画可能会导致显示错误、报错;

transform.DOKill();
  1. SetUpdate

默认情况下,Tween 在FixedUpdate中更新,可以使用 SetUpdate(true)将其更改为在Update中更新。

示例:

tween.SetUpdate(true);
  1. Play

  通过调用Play()方法,可以让Tween动画开始播放。如果Tween动画处于暂停、结束状态,也可以通过调用Play()方法将其恢复播放。需要注意的是,如果Tween动画已经处于播放状态,再次调用Play()方法不会产生任何效果。

示例:

tween.Play();
  1. Pause

通过调用Pause()方法,可以让Tween动画暂停播放;

示例:

tween.Pause();
  1. TogglePause

切换Tween动画的暂停状态。如果Tween正在播放,则暂停它;如果Tween已暂停,则继续播放它。

示例:

tween.TogglePause();
  1. Restart

重新启动Tween动画,将其重置到初始状态并重新播放。

示例:

tween.Restart();
  1. Complete

立即完成Tween动画,并将Tween对象移动到结束位置。

示例:

tween.Complete();
  1. Rewind

倒回Tween动画,将Tween对象返回到开始位置。

示例:

tween.Rewind();
  1. From

动画补间;
参数 :

  • isRelative:为true,传入的就是偏移量,即当前坐标 + 传入值 = 目标值,为falese,传入的就是目标值,即传入值 = 目标值

示例:

//2 秒内,移动到原点的 X 坐标偏移 5 的位置
transform.DOMoveX(5f, 2f).From(true).Play();
  1. SetSpeedBased

Tween动画设置为基于速度的模式,在不同的时间间隔内以相同的速度播放,而不是固定的时间间隔。

示例:

// 创建 Tween 对象并设置为基于速度的模式
transform.DOMoveX(5f, 2f).SetSpeedBased(true).Play();

1.2 动画Api

  1. DOTween.To

DOTween.To()用于创建一个Tween动画,它可以对一个值(如浮点数或颜色)进行补间动画。

示例:

Vector3 targetPosition = new Vector3(10f, 10f, 10f);
float duration = 1f;
//修改的属性:transform.position
//修改的值:targetPosition
//时间:duration
DOTween.To(() => transform.position, x => transform.position = x, targetPosition, duration);
  1. DOMove

DOMove()用于将物体平滑地移动到目标位置(世界坐标);

DOMoveX()、DOMoveY()、DOMoveZ():与DOMove()不同的是这三个方法只对某一条轴线进行移动;

示例:

//在 1 秒内将物体移动到世界坐标(1, 1, 1)的位置
transform.DOMove(new Vector3(1, 1, 1), 1);
//在 1 秒内将物体移动到X轴世界坐标 1 的位置
transform.DOMoveX(1, 1);
  1. DOLocalMove

DOLocalMove()用于将物体平滑地移动到目标位置(本地坐标);

DOLocalMoveX()、DOLocalMoveY()、DOLocalMoveZ():同样的DOLocalMove也可以对每一个轴进行单独操作;

示例:

//在 1 秒内将物体移动到本地坐标(1, 1, 1)的位置
rectTransform.DOLocalMove(new Vector3(1, 1, 1), 1);
//在 1 秒内将物体移动到X轴本地坐标 1 的位置
rectTransform.DOLocalMoveX(1, 1);
  1. DORotateDORotateQuaternion
  • DORotate 用于对物体进行欧拉角旋转动画操作。你可以使用它来让物体在指定的时间内平滑地从当前欧拉角旋转到目标欧拉角;
  • DORotateQuaternion 则是用于对物体进行四元数旋转动画操作。与 DORotate 不同的是,它接受一个目标旋转的四元数作为参数,可以让你更加灵活地控制物体的旋转变换;
// 使用 DORotate 方法在 2 秒内将物体绕 Y 轴旋转 180 度
transform.DORotate(new Vector3(0, 180, 0), 2f);// 定义一个目标旋转的四元数
Quaternion targetRotation = Quaternion.Euler(0, 90, 0);
// 使用 DORotateQuaternion 方法在 2 秒内将物体绕 Y 轴旋转 90 度
transform.DORotateQuaternion(targetRotation, 2f);
  1. DOShake

DOShakePosition实现对象的震动位移动画效果;

DOShakeRotation实现对象的震动旋转动画效果;

DOShakeScale 实现对象缩放震动动画效果;

参数:

  • duration:动画的持续时间,表示从开始到结束所需的时间长度。
  • strength:震动的强度,表示物体缩放的最大范围。
  • vibrato:震动的频率,表示物体缩放的次数。
  • randomness:随机性,可以增加震动的不规则性,表示每次震动缩放的大小在 -randomness 到 randomness 之间。
  • snapping:是否启用对齐到像素网格,设置为 true 可以使缩放更加流畅。

示例:

// 使对象在持续时间为 1 秒的动画中进行震动位移,位移的强度为 (10, 10, 10),位移的次数为 10 次,每次震动的位移随机在 -180 到 180 之间
transform.DOShakePosition(1f, new Vector3(10, 10, 10), 10, 180, false);
  1. DOText

DOText 方法可以应用于 Text 组件,以在给定的持续时间内逐步改变文本的内容。它接受以下参数:

  • text:目标文本,即最终要显示的文本。

  • duration:动画的持续时间,即文本逐步改变的时间长度。

  • richTextEnabled:指定是否启用富文本支持,如果启用,则可以使用 HTML 标签来设置文本样式。

  • scrambleMode:混淆模式,表示文本逐步改变时的动画效果,可以是 None、All、Uppercase、Lowercase 或 Numerals。

ScrambleMode.None:不进行混淆,文本逐步改变时保持原样。这是默认的混淆模式。

ScrambleMode.All:所有字符都会被随机顺序地混淆,然后逐步改变为目标文本。

ScrambleMode.Uppercase:所有字母字符(a-z)都会被随机顺序地混淆,然后逐步改变为目标文本中对应的大写字母。

ScrambleMode.Lowercase:所有字母字符(A-Z)都会被随机顺序地混淆,然后逐步改变为目标文本中对应的小写字母。

ScrambleMode.Numerals:所有数字字符(0-9)都会被随机顺序地混淆,然后逐步改变为目标文本中对应的数字。

  • scrambleEase:混淆缓动,表示混淆模式的动画缓动类型;

  • scrambleEaseOvershoot:用于调整混淆动画的缓动超调量参数。缓动超调量控制了在动画过程中的缓动效果是否超过了目标值,从而产生一种超过目标值后再回到目标值的弹簧效果。缓动超调量为正数时,会导致动画在结束时超过目标值然后回弹;而缓动超调量为负数时,会导致动画在结束时稍微低于目标值然后回弹;

  • scrambleEasePeriod:用于控制字符混淆过程中混淆效果的缓动周期的参数。缓动周期可以影响混淆效果的变化速度和流畅度,从而影响混淆动画的视觉效果。scrambleEasePeriod 的值为正数时,会使混淆效果在一定的周期内进行振荡,变化很快,但是相对比较流畅;而scrambleEasePeriod 的值为负数时,会使混淆效果在振荡的同时反向进行。这样会导致混淆效果变化的速度变慢,但是更加自然;

示例:

//text文本逐字地显示 "Hello",持续时间为 2 秒,使用了乱序显示的方式,使用了 Sine 缓动函数,表示逐渐加速然后减速,乱序显示的缓动振幅为 0.5,乱序显示的缓动周期为 -0.5
myText.DOText("Hello",2f,true,ScrambleMode.Uppercase,Ease.InOutSine,scrambleEaseOvershoot: 0.5f, scrambleEasePeriod: -0.5f);
  1. DOColor

用于对各种具有颜色属性的 Unity 组件进行颜色变化;

示例:

//在 1 秒内从当前颜色渐变到红色
myImage.DOColor(Color.red, 1f);
  1. DOFade

用于对具有透明度属性的对象进行透明度设置;

示例:

//在 1 秒内使 myImage 的透明度从当前值渐变到 0.5
myImage.DOFade(0.5f, 1f);
  1. DOScale

用于控制对象的缩放变化;

DOScaleX、DOScaleY、DOScaleZ:对某一个轴向进行缩放;

示例:

//一秒内将物体缩放至 2 倍
transform.DOScale(new Vector3(2f, 2f, 2f), 1f);
//一秒内将物体 X 轴方向缩放至 2 倍
transform.DOScaleX(2, 1f);
  1. DOLocalScale

用于控制对象在本地坐标的缩放变化;

DOLocalScaleX、DOLocalScaleY、DOLocalScaleZ:对某一个轴向进行缩放;

示例:

//本地坐标中,一秒内将物体缩放至 2 倍
transform.DOLocalScale(new Vector3(2f, 2f, 2f), 1f);
//本地坐标中,一秒内将物体 X 轴方向缩放至 2 倍
transform.DOLocalScaleX(2, 1f);
  1. DOLookAt

让对象的 z 轴正方向指向目标点

示例:

//在 2 秒内,平滑的让自身的 z 轴正方向指向目标点
transform.DOLookAt(obj.tranform, 2);
  1. DOGradientColor

实现渐变颜色动画效果;

参数说明如下:

  • gradient:定义了渐变颜色的Gradient对象。
  • property:指定要改变颜色的属性名称。通常是材质的属性名称,比如 "_Color"、"_EmissionColor" 等。
  • duration:动画的持续时间,表示从开始到结束所需的时间长度。

示例:

//2 秒内将对象的材质颜色从红色渐变到蓝色
Material material = GetComponent<Renderer>().material;
Gradient gradient = new Gradient();
gradient.SetKeys(new GradientColorKey[] { new GradientColorKey(Color.red, 0f), new GradientColorKey(Color.blue, 1f) },new GradientAlphaKey[] { new GradientAlphaKey(1f, 0f), new GradientAlphaKey(1f, 1f) }
);
material.DOGradientColor(gradient, "_Color", 2f);
  1. Blend

Blend名称的方法,允许混合动画,值得注意的是Blend是增量动画;

DOBlendableMoveBy:与DOMove作用类似,实现移动动画;

DOBlendableRotateBy:与DORotate作用类似,实现移动动画;

DOBlendableScaleBys:与DOScale作用类似,实现移动动画;

示例:

//假设原点坐标为(0,0,0),在 1 秒内移动到坐标(2,2,2)的位置
transform.DOBlendableMoveBy(new Vector3(1, 1, 1), 1);
transform.DOBlendableMoveBy(new Vector3(1, 1, 1), 1);


下一章 【Unity DOTween插件常用方法(二)】

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/661187.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java技术栈 —— Hadoop入门(二)实战

Java技术栈 —— Hadoop入门&#xff08;二&#xff09; 一、用MapReduce对统计单词个数1.1 项目流程1.2 可能遇到的问题1.3 代码勘误1.4 总结 一、用MapReduce对统计单词个数 1.1 项目流程 (1) 上传jar包。 (2) 上传words.txt文件。 (3) 用hadoop执行jar包的代码&#xff0c;…

【C++】 C++入门 — auto关键字

C入门 auto 关键字1 介绍2 使用细则3 注意事项 Thanks♪(&#xff65;ω&#xff65;)&#xff89;谢谢阅读下一篇文章见&#xff01;&#xff01;&#xff01; auto 关键字 1 介绍 编程时常常需要把表达式的值赋给变量&#xff0c;这就要求在声明变量时清楚地知道表达式的类…

56-主,回调函数,回调函数的参数传参,函数和变量的公私有,特权方法,立即执行函数,闭包(解除引用)

1.回调函数 定义了函数,没有调用函数,但最终执行了。 <script>//回调函数// 定时器setInterval(function(){console.log("a")},1000)// 延迟器setTimeout(function(){console.log("a")},3000)</script> 2.将实参变为函数,将person方法作为…

什么是多态?它和重载有什么区别?

前言 大家好&#xff0c;我是chowley&#xff0c;相信学过编程语言的你&#xff0c;肯定听说过多态和重载两个概念&#xff0c;可多数人对他们之间的区别还是不太清晰&#xff0c;导致同时听到两个词一起出现时会大脑空白&#xff0c;今天我就来详细的介绍一下二者的区别&…

指针的深入理解(四)

这节主要讨论sizeof和strlen的区别&#xff0c;以及一些理解题。 sizeof 求的是对象的大小&#xff0c;深入理解一点就是&#xff1a;这个对象&#xff0c;他一定有一块对应的内存空间。求的就是这一块内存空间。 strlen 只能用来求字符串&#xff0c; 求取的是字符串的长度。…

面试了字节大模型算法岗(实习),快被问哭了。。。。

最近技术群组织了一次算法面试讨论会&#xff0c;今天分享的是一位小伙子的痛苦面试经历&#xff0c;如果你想加入我们的讨论群&#xff0c;见文末。 本次分享的内容如下&#xff1a; 应聘岗位&#xff1a;字节大模型算法实习生 面试轮数&#xff1a;第一轮 整体面试感觉&…

python封装的.exe文件是如何在cmd中获取.xml路径的?

这段日子搞项目算法封装&#xff0c;愁死我。来回改了三遍&#xff0c;总算把相对路径、绝对路径&#xff0c;还有cmd给.exe传参的方式搞懂了。 主要是这个语句 workspace sys.argv[1] sys.argv[]的作用就是,在运行python文件的时候从外部输入参数往文件里面传递参数。 外部就…

CTF盲水印工具:Blind-WaterMark安装

工具下载地址&#xff1a;GitCode - 开发者的代码家园 下载完毕后&#xff0c;只留这些东西就行 接下来需要安装两个依赖&#xff1a; opencv、matplotlib 直接pip install安装的话&#xff0c;工具使用会报错 所以需要到网站里挑选适合的版本进行安装 下载地址&#xff1…

项目:博客

1. 运行环境&#xff1a; 主机 主机名 系统 服务 192.168.223.129 Server_Web Linux Web 192.168.48.131 Server-NFS-DNS Linux NFS/DNS 2. 基础配置 配置主机名&#xff0c;静态IP地址 开启防火墙并配置 部分开启SElinux并配置 服务器之间使用同ntp.aliyun.com进行…

代码随想录算法训练营第二十二天|235. 二叉搜索树的最近公共祖先 ● 701.二叉搜索树中的插入操作 ● 450.删除二叉搜索树中的节点

235. 二叉搜索树的最近公共祖先 发现规律&#xff1a; 当我们从上向下去递归遍历&#xff0c;第一次遇到 cur节点是数值在[p, q]区间中&#xff0c;那么cur就是p和q的最近公共祖先。 class Solution { public:TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, Tr…

在JVM中,Java对象是如何创建、存储和访问的?

在Java虚拟机&#xff08;JVM&#xff09;中&#xff0c;Java对象的创建、存储和访问是Java程序运行的核心部分。这个过程涉及到内存管理、对象模型以及运行时数据区域的概念。 1. Java对象的创建&#xff1a; a. 类加载&#xff1a; 在Java程序运行时&#xff0c;类加载器负…

详讲api网关之kong的基本概念及安装和使用(二)

consul的服务注册与发现 如果不知道consul的使用&#xff0c;可以点击上方链接&#xff0c;这是我写的关于consul的一篇文档。 upstreamconsul实现负载均衡 我们知道&#xff0c;配置upstream可以实现负载均衡&#xff0c;而consul实现了服务注册与发现&#xff0c;那么接下来…

C++算法学习心得七.贪心算法(1)

1.贪心算法理论基础 贪心的本质是选择每一阶段的局部最优&#xff0c;从而达到全局最优。贪心算法并没有固定的套路&#xff0c;唯一的难点就是如何通过局部最优&#xff0c;推出整体最优。最好用的策略就是举反例&#xff0c;如果想不到反例&#xff0c;那么就试一试贪心吧 贪…

leetcode209长度最小的子数组|滑动窗口算法详细讲解学习

滑动窗口是一种基于双指针的一种思想&#xff0c;两个指针指向的元素之间形成一个窗口。 分类&#xff1a;窗口有两类&#xff0c;一种是固定大小类的窗口&#xff0c;一类是大小动态变化的窗口。 简而言之&#xff0c;滑动窗口算法在一个特定大小的字符串或数组上进行操作&…

DevEco Studio 保存自动格式化代码

目标&#xff1a;保存后自动格式化代码 单次快捷键&#xff1a;Ctrl Alt L 步骤一 步骤二

7.2、子集求和问题与背包密码系统

7.2、子集求和问题与背包密码系统 一、数学描述 1.1、第一种描述 20 世纪 70 年代末&#xff0c;默克尔和赫尔曼首次尝试将密码系统建立在一个 NP-完全问题上。他们使用了以下数学问题的一个版本&#xff0c;该问题是对经典knapsack问题的概括。 子集和问题 假设你有一个正…

【Midjourney】AI绘画案例(1)龙年吉祥神兽

说明&#xff1a; 1、文中图片版权均为Midjourney所有&#xff0c;请勿用作商业用途。 2、文中图片均经过 Upscale x 4 处理。 3、由于模型原因&#xff0c;某些图片存在暇玼。 1、吉祥神兽——天马&#xff08;独角兽&#xff09; 天马消灾星。 提示词 Prompt: Sky Unicor…

2023强网杯复现

强网先锋 SpeedUp 要求2的27次方的阶乘的逐位之和 在A244060 - OEIS 然后我们将4495662081进行sha256加密 就得到了flag flag{bbdee5c548fddfc76617c562952a3a3b03d423985c095521a8661d248fad3797} MISC easyfuzz 通过尝试输入字符串判断该程序对输入字符的验证规则为9…

写一个C++工具类

C工具类是一种封装了一组相关功能的类&#xff0c;用于提供常用的工具函数或方法。下面是编写C工具类的一般步骤&#xff1a; 1. 定义类&#xff1a;首先&#xff0c;需要定义一个类来表示工具类。可以选择将其定义为静态类&#xff0c;这样就不需要创建对象来使用工具函数。 …

Prometheus+grafana配置监控系统

使用docker compose安装 方便拓展, 配置信息都放在在 /docker/prometheus 目录下 1.目录结构如下 . ├── conf │ └── prometheus.yml ├── grafana_data ├── prometheus_data └── prometheus_grafana.yaml2.创建目录文件 mkdir /docker/prometheus &&am…