【Unity】DOTween的常用函数解释

DOTween插件常用函数解释

1.DOTween.To(通用变化动画)

解释:将某一个值在一定的时间内变化到另一个值(通用的函数),可用于大部分的动画变化

使用示例:

using UnityEngine;
using DG.Tweening; 
​
public class ToTest : MonoBehaviour{//移动public void To(float duration){Vector3 endValue = new Vector3(10, 10, 10); //定义终点值DOTween.To(() => transform.position, //要移动的初始值pos => transform.position = pos, //移动过程的位置插值endValue, //目标值duration //移动耗时(秒));        } 
}
​

2.DOMove(移动动画)

解释:将物体从当前位置移动到目标位置

衍生函数:DOMoveX、DOMoveY、DOMoveZ(将物体从当前位置沿着X/Y/Z方向移动)

使用示例:

using UnityEngine;
using DG.Tweening; 
​
public class MoveTest : MonoBehaviour{public void MoveToTargetPosition(float duration,Vector3 targetPosition){transform.DOMove(targetPosition, //目标位置duration //移动耗时);}
}
​

3.DOScale(缩放动画)

解释:将物体从当前缩放值变化到目标缩放值

衍生函数:DOScaleX、DOScaleY、DOScaleZ(将物体沿X/Y/Z轴方向缩放)

使用示例:

using UnityEngine;
using DG.Tweening; 
​
public class ScaleTest : MonoBehaviour{//缩放到目标缩放值public void ScaleToTargetScale(float duration,Vector3 targetScale){transform.DOScale(targetScale, //目标缩放值duration //缩放耗时);}//基于当前缩放值按倍率进行缩放public void ScaleToTargetScale(float duration,float scale){transform.DOScale(scale, //缩放倍率(基于当前倍率)duration //缩放耗时);}
}

4.DOJump(跳跃动画)

解释:将物体从当前位置”跳跃“到目标位置

endValue:结束位置,

jumpPower:跳跃的最大高度,

numJumps:跳跃次数,

jumpPower:持续时间,

snapping:只取整数值(默认为false)

using UnityEngine;
using DG.Tweening;  // 引入命名空间public class Rotate : MonoBehaviour {void Start() {transform.DOJump(new Vector3(2, 2, 2), //结束位置4, //跳跃最大高度4, //跳跃次数5, //持续时间false //false表示取浮点数计算,true表示取整数计算);}
}

5.DOShake(摇晃动画)

解释:模拟随机抖动的效果,无方向性

5.1 位置摇晃

  • DOShakePosition(float duration, float/Vector3 strength, int vibrato, float randomness, bool snapping, bool fadeOut)

5.2 旋转摇晃

  • DOShakeRotation(float duration, float/Vector3 strength, int vibrato, float randomness, bool fadeOut)

5.3 缩放摇晃

  • DOShakeScale(float duration, float/Vector3 strength, int vibrato, float randomness, bool fadeOut)

5.4 参数解释

以下按形参的顺序解释:

duration:持续时间,

strength:晃动幅度(默认为float:1),

vibrato:晃动的次数(默认为10),

randomness:随机晃动角度(0-180,默认为90),

snapping:只取整数值(默认为false),

fadeOut:渐出效果(默认为true)

5.5 示例

using UnityEngine;
using DG.Tweening;  // 引入命名空间public class Shake : MonoBehaviour {void Start() {transform.DOShakePosition(5);}
}

6.DOPunch(击打动画)

解释:该动画可以在位置、旋转、缩放三种形式上模拟表现被强力击打后的震动,有明确的方向性

6.1 位置击打

  • DOPunchPosition(Vector3 punch, float duration, int vibrato, float elasticity, bool snapping)

6.2 旋转击打

  • DOPunchRotation(Vector3 punch, float duration, int vibrato, float elasticity)

6.3 缩放击打

  • DOPunchScale(Vector3 punch, float duration, int vibrato, float elasticity)

6.4 参数解释

以下形参按顺序解释:

punch:击打方向和力度,

duration:持续时间,

vibrato:晃动的次数(默认为10),

elasticity:弹性系数(默认为1),

snapping:只取整数值(默认为false)

6.5 示例

using UnityEngine;
using DG.Tweening;  // 引入命名空间public class Punch : MonoBehaviour {void Start() {transform.DOPunchPosition(new Vector3(2, 2, 2), 5);}
}

7.文字动画

7.1 文字颜色变化

DOColor(Color to, float duration)

  • to:当前文字当前颜色要变化到的目标颜色

  • duration:变化过程的持续时间

7.2 文字透明度变化

DOFade(float to, float duration)

  • to:数值范围是0~1,表示文字当前不透明度要变化到的目标不透明度

  • duration:变化过程的持续时间

7.3 打字机动画

DOText(string to, float duration, bool richTextEnabled = true, ScrambleMode scrambleMode = ScrambleMode.None, string scrambleChars = null)

  • to:要逐个文字打出的文本

  • duration:持续时间

  • richTextEnabled:是否支持富文本(默认为True)

  • scrambleMode:乱码效果模式(默认为不启用乱码)

  • scrambleChars:乱码字符(默认为null)

枚举值说明
ScrambleMode.None默认值,不启用乱码,直接逐字显示原文本。
ScrambleMode.All所有未显示的字符替换为完全随机字符(如字母、数字、符号)。
ScrambleMode.Uppercase随机大写字母作为乱码(如A、X、K)。
ScrambleMode.Lowercase随机小写字母作为乱码(如b、q、m)。
ScrambleMode.Numerals随机数字作为乱码(如3、9、1)。
ScrambleMode.Custom用自定义字符作为乱码(需通过 scrambleChars 参数指定)。

8.动画序列(重点)

允许你将多个动画组合在一起,以特定的顺序依次执行。适用于需要在特定时间顺序内执行多个动画的场景,例如:角色的移动、跳跃和旋转等多个动作,可以使用序列来组织这些动画。

8.1 顺序动画(Append)

说明:让多个动画按照在序列中的顺序逐个执行

using DG.Tweening;
​
public class SequenceTest : MonoBehaviour{// 创建一个空序列Sequence sequence = DOTween.Sequence();// 添加动画到序列(默认按顺序执行)sequence.Append(transform.DOMoveX(5, 1f));  // 第一步:向右移动sequence.Append(transform.DORotate(new Vector3(0, 180, 0), 0.5f)); // 第二步:旋转sequence.Append(transform.DOScale(Vector3.zero, 1f)); // 第三步:缩小消失// 播放序列sequence.Play();
}
 

8.2 并行动画(Join)

说明:让多个动画同时进行。这个特别适合一些需要同时进行的行为,比如某个角色一边移动一边跳跃。

Sequence sequence = DOTween.Sequence();
​
// 第一步:移动和旋转同时进行
sequence.Append(transform.DOMoveX(5, 1f));
sequence.Join(transform.DORotate(new Vector3(0, 180, 0), 1f)); // 与移动同步进行
// 第二步:缩小
sequence.Append(transform.DOScale(Vector3.zero, 0.5f));
sequence.Play();

8.3 动画序列的其它操作

Sequence loopTween = DOTween.Sequence();
将一个新的动画添加到序列的末尾。
loopTween.Append(Tween tween);
​
将一个新的动画添加到序列的开头。
loopTween.Prepend(Tween tween);
​
将一个新的动画添加到序列中,与当前动画同时播放。
loopTween.Join(Tween tween);
​
在指定时间插入一个新的动画。
loopTween.Insert(float time, Tween tween);
​
在序列中添加一个间隔(不执行任何动画的时间)。
loopTween.AppendInterval(float interval): 
​

8.3 暂停、停止、重播、播放序列动画

//播放序列动画
loopTween.Play();
​
//暂停序列动画
loopTween.Pause();
​
//停止序列动画
loopTween.Kill();
​
//重播序列动画
loopTween.Restart();

9.动画缓动(SetEase)

9.1 预设动画缓动表

DOTween为开发者提供了大量的预设好的动画缓动,可以赋予动画不同的运动效果。

类别Ease类型效果描述适用场景
线性Linear匀速运动,无加速或减速需要完全均匀的运动
平滑缓入InSine开始时缓慢,逐渐加速(正弦曲线)自然感强的启动动作
InQuad缓入(二次方曲线,比InSine更明显的加速)快速启动的动画
InCubic缓入(三次方曲线,加速更强)强调爆发力效果
InQuart缓入(四次方曲线,极强加速)极快速的开始
InQuint缓入(五次方曲线,最强加速)夸张的加速效果
InExpo缓入(指数曲线,初始几乎静止,突然加速)科技感或突然出现的效果
InCirc缓入(圆形曲线,初始慢,后端急剧加速)弹射或冲刺效果
InElastic缓入弹性效果(带有回弹的振荡)弹性物体(如弹簧)
InBack缓入回拉效果(先轻微反向,再加速)卡通风格的预备动作
平滑缓出OutSine结束时缓慢减速(正弦曲线)自然停止的动作
OutQuad缓出(二次方曲线,明显减速)快速停止的动画
OutCubic缓出(三次方曲线,减速更强)强调缓冲效果
OutQuart缓出(四次方曲线,极强减速)突然刹车效果
OutQuint缓出(五次方曲线,最强减速)夸张的缓冲效果
OutExpo缓出(指数曲线,运动到终点前几乎无减速,突然停止)瞬间停止的科技效果
OutCirc缓出(圆形曲线,前端快速,末端急剧减速)撞击或急停效果
OutElastic缓出弹性效果(到达终点后回弹振荡)弹性碰撞(如球落地)
OutBack缓出回弹效果(超过终点后回拉)卡通风格的过冲效果
平滑缓入缓出InOutSine开始和结束均平滑(正弦曲线)自然的循环动作
InOutQuad对称加速和减速(二次方曲线)标准平滑过渡
InOutCubic更强的平滑加速和减速(三次方曲线)强调中间速度变化
InOutQuart极强平滑加速和减速(四次方曲线)快速启动和停止
InOutQuint最强平滑加速和减速(五次方曲线)夸张的平滑效果
InOutExpo几乎瞬间加速和减速(指数曲线)科技感开关效果
InOutCirc前后端急剧变化(圆形曲线)模拟跳跃或弹跳
InOutElastic中间带有弹性振荡弹性物体的完整动作
InOutBack轻微过冲和回拉卡通风格的完整动作
特殊效果Flash自定义闪烁效果(需设置振幅和频率)闪烁、震动
FlashIn/FlashOut快速闪烁缓入或缓出UI提示或警告效果
Shake随机震动(需设置强度、频率等)相机抖动、物体震动
自定义AnimationCurve使用Unity的AnimationCurve自定义任意曲线需要完全自定义的运动
EaseFunction通过代码传入自定义函数复杂数学曲线或特殊算法

9.2 使用示例

transform.DOMove(new Vector3(10,10,10),3f).SetEase(Ease.OutBack);
transform.DOMove(new Vector3(10,10,10),3f).SetEase(Ease.InSine);

10.动画回调函数

说明:动画回调函数类似于Unity的生命周期函数,它允许你在动画的生命周期内执行一些代码。

回调函数名解释示例
.OnStart(Action onStart)在动画开始时执行的回调tween.OnStart(() => Debug.Log("动画开始"));
.OnPlay(Action onPlay)在动画播放时执行的回调tween.OnPlay(() => Debug.Log("动画播放"));
.OnUpdate(Action onUpdate)在每一帧更新时执行的回调tween.OnUpdate(() => Debug.Log("动画更新"));
.OnComplete(Action onComplete)在动画完成时执行的回调tween.OnComplete(() => Debug.Log("动画完成"));
.OnKill(Action onKill)在动画被杀死时执行的回调tween.OnKill(() => Debug.Log("动画被杀死"));

11.Set相关函数

函数名解释示例
.SetDelay(float delay)设置动画开始前的延迟时间(以秒为单位)tween.SetDelay(1f); // 延迟1秒后开始
.SetEase(Ease easeType)设置动画的曲线类型(如线性、加速、减速等,类似设置PPT动画的出现效果)。tween.SetEase(Ease.InOutQuad); // 使用 InOutQuad 缓动
.SetLoops(int loops, LoopType loopType)设置动画的循环次数和循环类型(如循环、反向循环等)。tween.SetLoops(3, LoopType.Yoyo); // 循环3次,反向循环
.SetAutoKill(bool autoKill)设置动画完成后是否自动销毁。tween.SetAutoKill(false); // 动画完成后不自动销毁
.SetId(object id)设置动画的 ID,以便后续查找和管理。tween.SetId("myTween"); // 设置 ID 为 "myTween"
.SetUpdate(bool isIndependent):设置动画是否独立于时间更新(用于在时间暂停时仍然更新)。tween.SetUpdate(true); // 在时间暂停时仍然更新

12.查阅官方文档

除了上述的内容,你还可以查阅DOTween的官方文档,里面提供了插件所包含的全部API

文档连接: DOTween - Documentation

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

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

相关文章

数据结构测试模拟题(1)

1、约瑟夫问题 #include<bits/stdc.h> using namespace std; const int N25; int e[N],ne[N],head-1,idx1; int n,m; void add_to_head(int x){e[idx]x;ne[idx]head;headidx; } void add(int k,int x){e[idx]x;ne[idx]ne[k];ne[k]idx; } int main(){cin>>n>>…

Helm配置之为特定Deployment配置特定Docker仓库(覆盖全局配置)

文章目录 Helm配置之为特定Deployment配置特定Docker仓库(覆盖全局配置)需求方法1:使用Helm覆盖值方法2: 在Lens中临时修改Deployment配置步骤 1: 创建 Docker Registry Secret步骤 2: 在 Deployment 中引用 Secret参考资料Helm配置之为特定Deployment配置特定Docker仓库(覆…

BERT 作为Transformer的Encoder 为什么采用可学习的位置编码

摘要 BERT 在位置编码上与原始 Transformer 论文中的 sin/cos 公式不同&#xff0c;选择了可学习&#xff08;learned&#xff09;的位置嵌入方案。本文将从 Transformer 原始位置编码选项入手&#xff0c;分析 BERT 选择 learned positional embeddings 的四大核心原因&#x…

【Linux 学习计划】-- gcc、g++、动静态库链接

目录 什么是gcc、g gcc、g 相关操作详解 预处理、编译、汇编、链接来源 动静态链接是什么 结语 什么是gcc、g gcc、g其实就是编译器&#xff0c;是帮助我们从.c或者.cc&#xff0c;.cpp文件编译成可执行程序的 其中&#xff0c;我们如果要编译c语言文件的话&#xff0c;…

前端读取本地项目中 public/a.xlsx 文件中的数据 vue3

前端读取本地项目中 public/a.xlsx 文件中的数据 vue3 项目中需要在 Vue3 项目中读取 public/a.xlsx 文件&#xff0c;可以使用 fetch API 来获取文件内容 一、安装 xlsx 首先&#xff0c;你需要安装 xlsx 库&#xff1a; npm install xlsx二、在需要用的页面里引入xlsx im…

MySQL:to many connections连接数过多

当你遇到 MySQL: Too many connections 错误时&#xff0c;意味着当前连接数已达到 MySQL 配置的最大限制。这通常是由于并发连接过多或连接未正确关闭导致的。 一、查看当前连接数 查看 MySQL 当前允许的最大连接数 SHOW VARIABLES LIKE max_connections;查看当前使用的最大…

2024年热门AI趋势及回顾

人工智能的崛起 2024 年可能会被铭记为人工智能不再是一种技术新奇事物&#xff0c;而是成为现实的一年。微软、Salesforce 和 Intuit 等巨头将人工智能融入主流企业解决方案&#xff1b;从文案写作到数据分析&#xff0c;专门的人工智能应用程序和服务如雨后春笋般涌现&#…

LangFlow技术深度解析:可视化编排LangChain应用的新范式 -(2)流编辑器系统

Flow Editor System | langflow-ai/langflow | DeepWiki 流编辑器系统 相关源文件 流编辑器系统是 Langflow 的核心交互式组件&#xff0c;允许用户直观地创建、编辑和管理 LLM 驱动的应用程序。它提供了一个直观的画布&#xff0c;用户可以在其中添加节点、将其与边缘连接并…

驱动-定时-秒-字符设备

文章目录 目的相关资料参考实验驱动程序-timer_dev.c编译文件-Makefile测试程序-timer.c分析 加载驱动-运行测试程序总结 目的 通过定时器timer_list、字符设备、规避竞争关系-原子操作&#xff0c;综合运用 实现一个程序&#xff0c;加深之前知识的理解。 实现字符设备驱动框…

[Java实战]Spring Boot整合Kafka:高吞吐量消息系统实战(二十七)

[Java实战]Spring Boot整合Kafka&#xff1a;高吞吐量消息系统实战&#xff08;二十七&#xff09; 一、引言 Apache Kafka作为一款高吞吐量、低延迟的分布式消息队列系统&#xff0c;广泛应用于实时数据处理、日志收集和事件驱动架构。结合Spring Boot的自动化配置能力&…

Kotlin Multiplatform--04:经验总结(持续更新)

Kotlin Multiplatform--04&#xff1a;经验总结&#xff08;持续更新&#xff09; 引言 引言 本章用来记载笔者开发过程中的一些经验总结 一、Ktor设置Header 在官方文档中&#xff0c;想要设置Header的示例代码如下&#xff1a; client.get("https://ktor.io&qu…

在 Ubuntu 系统中,将 JAR 包安装为服务

在 Ubuntu 系统中&#xff0c;将 JAR 包安装为服务可以通过 systemd 来实现。以下是详细的操作步骤&#xff1a; 准备工作 确保 JAR 文件路径和 Java 运行时环境已准备好。验证 Java 是否可用&#xff1a; java -version创建 systemd 服务文件 systemd 的服务文件通常位于 …

电商项目-商品微服务-品牌管理微服务开发

一、功能分析 品牌管理微服务包括&#xff1a; &#xff08;1&#xff09;查询全部列表数据 &#xff08;2&#xff09;根据ID查询实体数据 &#xff08;3&#xff09;增加 &#xff08;4&#xff09;修改 &#xff08;5&#xff09;删除 &#xff08;6&#xff09;分页…

Spring Boot开发—— 整合Lucene构建轻量级毫秒级响应的全文检索引擎

文章目录 一、为什么选择 Lucene?轻量级搜索的底层密码二、核心原理:Lucene 的倒排索引2.1 倒排索引:速度之源2.2 段合并优化策略三、Spring Boot集成Lucene实战3.1 依赖配置3.2 实体与索引设计3.3 核心索引服务(含异常处理)3.4 使用示例(测试类)四、高级优化技巧4.1 索…

SpringBootDay1|面试题

目录 一、springboot框架 1、什么是springboot 2、Spring Boot的主要优点 3、springboot核心注解 4、定义banner&#xff08;springboot的logo&#xff09; 5、springboot配置文件 6、springboot 整合 jdbc 二、面试题 1&#xff09;springmvc的作用 ​编辑 2&#x…

jQuery Ajax中dataType 和 content-type 参数的作用详解

jQuery Ajax中dataType与contentType参数解析 一、核心概念对比 参数作用对象数据类型默认值dataType响应数据预期接收的数据格式jQuery自动判断&#xff08;根据响应头MIME类型&#xff09;contentType请求数据发送数据的编码格式application/x-www-form-urlencoded 二、da…

几款常用的虚拟串口模拟器

几款常用的虚拟串口模拟器&#xff08;Virtual Serial Port Emulator&#xff09;&#xff0c;适用于 Windows 系统&#xff0c;可用于开发和调试串口通信应用&#xff1a; 1. com0com (开源免费) 特点&#xff1a; 完全开源免费&#xff0c;无功能限制。 可创建多个虚拟串口…

LLM笔记(六)线性代数

公式速查表 1. 向量与矩阵&#xff1a;表示、转换与知识存储的基础 向量表示 (Vectors): 语义的载体 在LLM中&#xff0c;向量 x ∈ R d \mathbf{x}\in\mathbb{R}^d x∈Rd 是信息的基本单元&#xff0c;承载着丰富的语义信息&#xff1a; 词嵌入向量 (Word Embeddings)&am…

[特殊字符] Word2Vec:将词映射到高维空间,它到底能解决什么问题?

一、在 Word2Vec 之前,我们怎么处理语言? 在 Word2Vec 出现之前,自然语言处理更多是“工程方法”,例如字符串匹配、关键词提取、正则规则...。但这些表示通常缺乏语义,词与词之间看不出任何联系以及非常浅显。当然,技术没有好坏,只有适合的场景。例如: 关键词匹配非常…

栈和队列的模拟实现

栈和队列的模拟实现 容器适配器priority_queue(优先级队列&#xff09;priority_queue的使用priority_queue的模拟实现&#xff1a; 仿函数什么叫仿函数&#xff1f;需要自己实现仿函数的情况&#xff1a; 栈的模拟实现队列的模拟实现deque&#xff08;vector和list的缝合怪&am…