Unity——DOTween插件使用方法简介

这篇具有很好参考价值的文章主要介绍了Unity——DOTween插件使用方法简介。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

 文章来源地址https://www.toymoban.com/news/detail-743084.html

缓动动画既是一种编程技术,也是一种动画的设计思路。从设计角度来看,可以有以下描述

  1. 事先设计很多基本的动画样式,如移动、缩放、旋转、变色和弹跳等。但这些动画都以抽象方式表示,一般封装为程序函数
  2. 动画的参数可以在使用时指定,如移动的起点和终点、旋转的角度、变色的颜色,还有关键的动画时间长度等
  3. 动画默认是匀速播放,也可以指定播放的时间曲线。如可以做出先快后满、先满后快等效果,甚至还可以让时间在正向流逝和倒流中交替,实现弹簧式的效果
  4. 可以按时间顺序任意组合这些动画,如先方法再移动、先缩小再变色再移动等
  5. 可以同时播放多个这些动画。例如,一边放大一边移动等。总之,可以按时间顺序组合,也可以同时组合

采用上述思路,可以封装出易用的缓动动画库。例如DOTween就是一种常用的缓动动画插件。

导入DOTween插件

DOTween - Asset Store (unity.com)

在Asset Store中搜索“DOTween'”即可找到该插件,使用免费版即可。

Unity——DOTween插件使用方法简介,Unity,unity,游戏引擎

 导入插件后,会自动打开一个插件窗口,如图Unity——DOTween插件使用方法简介,Unity,unity,游戏引擎

 由于目前插件的功能越来越强大,因此特意增加了一个设置面板,如图Unity——DOTween插件使用方法简介,Unity,unity,游戏引擎Unity——DOTween插件使用方法简介,Unity,unity,游戏引擎

 直接点绿色的,然后点apply即可

在这之后,试验一下它的基本用法。创建脚本TestTween,内容如下

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class NewBehaviourScript : MonoBehaviour
{
 
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.D))
        {   //1秒时间移动到在x轴上坐标为5的位置上
            transform.DOMoveX(5, 1);
        }
        if (Input.GetKeyDown(KeyCode.A))
        {   //1秒时间移动到在x轴上坐标为1的位置上
            transform.DOMoveX(0, 1);
        }
    }
}

然后将TestTween脚本挂在任意物体上,按下D,物体会沿x轴平移到x=5的位置,按下A,优惠移动到x=0的位置。可以看出,DOMoveX是一个简单的平移动画,第一个参数是x坐标,第二个参数是时间。

例子演示: 

DOTween移动

上文已经试验了简单的平移动画,DOTween还提供了大量类似的动画模式,最常用的旋转、位移和缩放都是直接对Transform组件操作的。

一、各种缓动动画使用方法

1.作用于Transform组件

函数 参数

作用

 

DOMove 目标坐标,时间 移动到目标位置
DOMoveX 目标坐标x,时间 仅向一个方向移动。同理还有y和z
DOLocalMove   DOMove的局部坐标系版本
DOLocalMoveX   DOMoveX的局部坐标系版本。同理还有y和z
DORotate 目标角度(欧拉角),时间 旋转到目标朝向
DORotateQuaternion 目标朝向(四元数),时间 旋转到目标朝向
DOLocalRotate   DORotate的局部坐标系版本
DOLocalRotateQuaternion   DORotateQuaternion的局部坐标系版本
DOLookAt 目标朝向(向量),时间 让物体旋转,直到物体前方为指定向量的方向
DOScale 目标比例,时间 缩放到指定比例
DOScaleX 目标比例X,时间 仅向一个方向缩放。同理还有Y和Z
DOPunchPosition 振动方向和强度,时间,震动次数,弹性 用于表现被强力击打后的震动,沿振动方向反复移动。时间之后的参数都可以省略
DOPunchRotation 振动方向和强度(旋转的轴),时间,震动次数,弹性 用于表现被强力打击后的震动,沿指定旋转轴来回旋转
DOPunchScale 振动方向和强度(缩放比例),时间,震动次数,弹性 用于表现被强力打击后的震动,根据指定比率缩放
DOShakePosition 时间,力度,震动次数,随机性(0~180) 表现随机性的震动。除时间外的参数都可以省略
DOShakeRotation 时间,力度,震动次数,随机性(0~180) 类似DOShankePosition,用旋转表示震动
DOShakeScale 时间,力度,震动次数,随机性(0~180) 类似DOShankePosition,用缩放表示震动
DOBlendableMoveBy 位置变化量,时间

DORotate的动画混合+变化量版本

DOBlendableRotateBy 旋转变化量,时间 DORotate的动画混合+变化量版本
DOBlendableScaleBy 缩放变化量,时间 DOScale的动画混合+变化量版本
DOBlendablePunchRotation   DOPunchRotation的动画混合版本

以上函数基本覆盖了所有的Transform组件缓动动画方法。除简单的移动、旋转和缩放动画外,常用的还有摄像机缓动动画,如下所示

2.作用于Camera组件

函数 参数

作用

 

DOShakePosition 时间,力度,震动次数,随机性 让摄像机随机振动。时间以外的参数可以省略

 可以用缓动动画慢慢改变材质的颜色、透明度等,下面是作用于材质(Material)的缓动动画

3.作用于Material组件

函数 参数

作用

 

DOColor 颜色,时间 渐变到指定颜色
DOFade 透明度(0~1),时间 渐变到指定透明度
DOGradientColor 颜色梯度,时间 根据指定颜色梯度渐变
DOOffset 材质偏移(Vecctor2),时间 材质偏移,可以做贴图动画效果
DOBlendableColor 颜色,时间 DOColor的可混合版本

UI文本通常需要一些动态效果,如打字效果(文字一个接一个出现)和改变文字颜色等。DOTween还有一些专门用于UI组件(Text)的缓动动画,如下

4.作用于Text组件

函数 参数

作用

 

DOText 文本内容,时间 打字机效果,逐字显示文本内容
DOColor 颜色,时间 改变文字颜色
DOFade 透明度,时间 改变文字透明度
DOBlendableColor 颜色,时间 DOColor的可混合版本

二、动画曲线(Ease)

通过试验会发现,前面的动画效果都不是匀速运动的,而是有一个从快到慢的变化。这是因为DOTween默认的动画曲线不是Linear曲线,而是Out Quad曲线。

在缓动动画中,动画曲线称为Ease,它有多种内置的模式,包括通过修改DOTween设置可以改变默认的动画曲线。选择主菜单中的Tools->Demigiant->DOTween Utility Panel可以重新打开DOTween的设置页面,其中的Ease选项就是动画曲线。可以将默认的Out Quad改为简单的Linear试试效果,如图

Unity——DOTween插件使用方法简介,Unity,unity,游戏引擎

 DOTween提供了很多的缓动动画曲线模式,这里不一一详述,不过常用的几种模式有明显的命名规则,如In Sine、Out Sine、In Out等,一下进行概括的解释。

In指的是一种由慢到快的方式,Out则指的是由快到慢。Sine(正弦曲线)指的是比较平滑的过渡;而Quad则指的是会有更明显的快慢变化;比Quad速度变化更剧烈的,还有Cubic、Quart、Quint等。Expo代表指数曲线,还有更多特殊的曲线,比如由弹性的Elastic、先后退再前进的Back、以及Bounce(弹跳曲线)。

当然,如果直接修改默认的动画曲线,那会导致所有动画都是用统一的曲线。实际上每个动画都可以用不同的动画曲线,示例写法如下。

  if (Input.GetKeyDown(KeyCode.D))
        {  
            transform.DOMoveX(5, 1).SetEase(Ease.InOutSine);
        }
        if (Input.GetKeyDown(KeyCode.A))
        {
            Tweener t = transform.DOMoveX(0, 1);
            t.SetEase(Ease.OutQuad);
        }

DOMove等函数的返回值用Tweener类型的变量接受,然后再对Tweener进行设置即可。除了SetEase以外还有其他更多可调用的方法。

三、动画的组合

使用Sequence(缓动动画序列)可以让多个动画依次播放,也可以在动画之间插入等待时间,其示例如下

 //创建动画序列
    Sequence seq = DOTween.Sequence();
    //添加动画到序列中
    seq.Append(transform.DOMove(new Vector3(3,4,5),2));
    //添加时间间隔
    seq.AppendInterval(1);
     seq.Append(transform.DOMove(new Vector3(0,0,0),1));
    //按时间插入插画
    //下面代码的第一个参数为时间,表示插入动画到规定的时间点
    seq.Insert(0,transform.DORotate(new Vector3(0,90,0),1));

缓动动画序列有多个常用方法,Append可以在序列后面添加动画,AppendInterval用于添加等待时间,而Insert则是在指定时间插入动画。

需要特别指出,使用Insert插入的动画并不像猜想的那样会将原有的动画推迟到后面,而是会和原来的动画同时播放。这就引出了一个关键问题:DOTween的动画是可以同时播放的,而且Sequence虽然名为“序列”,但实际上也支持多个动画同时播放。

除了利用Sequence序列播放动画或同时播放动画外,实际上直接创建多个动画,它们也会同时播放,其示例如下

  //两个动画同时播放,向斜上方移动
    Tweener t = transform.DOMoveX(10, 1);
    t.SetEase(Ease.OutQuad);
    transform.DOMoveY(10,1);

大部分缓动动画可以做到合理混合的效果,但有时同时播放多种动画也会产生不合理的结果。某些缓动方式带有Blendable关键字,如DOBlendableMoveBy,这类缓动动画能够确保融合效果的正确性。

四、控制动画的播放

缓动动画最大的优势在于它是由程序完全控制的,它的背后是一套简洁的数学算法,因此缓动动画很容易实现暂停、重放和倒放等功能。DOTween也提供了多种方法控制动画的播放,示例如下

//播放
transform.DOPlay();
//暂停
transform.DOPause();
//重播
transform.DORestart();
//倒播,此方法会直接退回起始点
transform.DORewind();
//删除动画
transform.DOKill();
//跳转到指定时间点。参数1表示跳转的时间点,参数2表示是否立即播放
transform.DOGoto(1.5f,true);
//倒向播放动画
transform.DOPlayBackwards();
//正向播放动画
transform.DOPlayForward();

五、动画回调函数

为了更好地让动画与逻辑配合,与动画帧事件类似,也可以为缓动动画添加一些回调函数。最常见的是再播放结束时自动调用下一个函数,示例如下

 //动画完成回调,方便起见回调函数协亨了Lambda表达式
    transform.DOMove(new Vector3(3,3,0),2).OnComplete(()=>{
        Debug.Log("Tween播放完成")
    });
    //无限循环震动
    Tween t2 = transform.DOShakePosition(1, new Vctor3(2, 0, 0));
    t2.SetLoops(-1);
    //每次循环完成时回调
    transform.DOMove(Vector3.zero,2).OnStepComplete(()=>{
        Debug.Log("Tween单次播放完成")
    });

 

 

到了这里,关于Unity——DOTween插件使用方法简介的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 新手向 使用C#自带方法制作unity存档系统(无插件)

    纯原创,自制 本人还是个在校的高中生,能力不精如果有漏洞欢迎指出 先放出我们示范项目的样子 演示项目工程文件下载 后面会在B站发详细的视频教程(所以文章之后肯会改) 嫌麻烦的直接复制到项目里就可以用哦 (全部的SaveSystem源码最后放出方便大家复制) 可以存储

    2024年02月10日
    浏览(38)
  • Unity开发使用DOTween插件实现ui组件慢慢消失和慢慢出现

    有时候做游戏提示的话,需要一个慢慢出现慢慢消失的效果,Unity开发使用DOTween插件实现ui组件慢慢消失和慢慢出现非常的方便。 做一个简单的小笔记,也分享在csdn上,直接上步骤 这里需要导入DOTween插件(简单提一嘴)。  注意点来了,提示Text文本依托一个image做为父类(这

    2024年02月12日
    浏览(66)
  • Unity绳子插件QuickRopes使用方法(让你快速创建你想要的绳索效果)

    QuickRope插件介绍 从插件的名字就可以知道,QuickRope,使用此插件可以让开发者快速创建绳子、锁链等链条的工具,并可以模拟这些绳子的物理属性,自动生成绳子,可以编辑绳子属性,创建一条你想要的绳子。 插件demo演示说明 demo1:Edit Rope Renderer 点击左侧列表按钮即可看到

    2023年04月08日
    浏览(45)
  • VS Code里使用Debugger for Unity插件调试的方法(2023最新版)

    换了台开发机,重新安装了下开发环境。突然发现visual studio code无法用来调试unity了。 明明流程都是按照unity官方教程2023.1进行的,可在创建launch.json文件时,死活出不来unity debugger选项。 说明:debugger for unity是一个非正式支持的,官方推荐的,应用最广的,visual studio code上的

    2024年02月11日
    浏览(37)
  • 【Unity 实用插件篇】 | UI适配神器 Device Simulator 移动设备模拟器 的详细使用方法

    前言 今天带来的是Unity提供的一个设备模拟器 Device Simulator 。 它可以帮助开发者在编辑器中模拟出移动端的环境,直接进行测试。 所有操作都可以在编辑器上进行#

    2024年02月11日
    浏览(29)
  • Unity——DoTween插件

    using DG.Tween DoTween的一些用法 移动动画 旋转   尺寸 ` 震动 材质 摄像机 Text 队列 设置参数 运动曲线 缓动函数速查表 (xuanfengge.com) 回调函数 控制函数 获取数据 携程 路劲动画 using System.Linq;  

    2024年02月11日
    浏览(30)
  • Unity Dotween插件物体、ui的移动 旋转 缩放效果

    Unity Dotween插件物体、ui的移动 旋转 缩放效果 #脚本应用命名空间 using DG.Tweening; ##让游戏物体平移 //参数一:要移动到的位置 //参数二:动画完成要多少秒 transform.DOMove(new Vector3(1,3, 8.08f),5.5f); ##让游戏物体旋转 //参数一:要旋转成的样子的坐标 //参数二:旋转动画多少秒完成 trans

    2024年02月01日
    浏览(36)
  • 新版UNITY游戏(IL2CPP类型)使用内嵌型机器翻译插件XUnity.AutoTranslator的食用方法

    #新版UNITY游戏(IL2CPP类型)使用内嵌型机器翻译插件XUnity.AutoTranslator的食用方法# 文档更新时间:2022/4/3 20:02:50 网络具备访问github.com的能力 能够进行网页翻译的浏览器(用来查看官方的说明文档),以及耐心 网络能够访问机器翻译服务(谷歌等),如果使用百度需要注册百

    2024年02月09日
    浏览(76)
  • Unity Dotween插件的运动曲线(Ease)介绍Ease选项Ease效果示例以及C#修改动画曲线功能

    我们在制作动画时经常使用这个Dotween插件,在移动、旋转、透明度等等参数的控制都可以使用该插件,而且在这个插件上的控制动画可以设置曲线,内置的曲线有这些: 以InOutSine的曲线进行往右移动: 效果是这样的: 能看出开始是从0提速,最后是慢慢减速至0的效果。 4个

    2024年02月01日
    浏览(43)
  • Unity3d2021版本 使用DOTween插件报错The type name ‘Rigidbody2D‘ could not be found in the namespace ‘****‘问题

    最近在升级项目至2021版本的过程中发现了诸多这种问题,今天就遇到这样的报错: AssetsPluginsDemigiantDOTweenModulesDOTweenModulePhysics2D.cs(143,18): error CS1069: The type name ‘Rigidbody2D’ could not be found in the namespace ‘UnityEngine’. This type has been forwarded to assembly ‘UnityEngine.Physics2DModule,

    2024年02月11日
    浏览(41)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包