[Unity 3d] 插件---- DoTween 动画方法调用及执

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

[Unity 3d] 插件---- DoTween 动画方法调用及执行

[Unity 3d] 插件---- DoTween 动画方法调用及执

一、移动和旋转(一到四主要应用于Transform的方法)
1、使用DoTween首先要引用命名空间 Using DG.Tweening;
2、transform.DOMove(目标位置,所花费的时间/s) //移动方法
3、transform.DoLocalMoveX(目标位置,所花费的时间)//单一的移动方法
4、transform.DoLocalMove()//移动自己的局部坐标
5、transform.DoRotate(目标位置,时间) //旋转
6、transform.DoLocalRotate()//旋转局部的角度
7、transform.DORotateQuaternion(目标位置,时间)//四元数旋转
8、transform.DOLookAt(看向的目标位置,时间); //看向目标的动画
二、物体的缩放和Punch(弹簧效果)函数的参数解释
1、 transform.DOScale(Vector3.one * 2, 2); //目标位置 ,时间
2、 transform.DOPunchPosition(new Vector3(0, 1, 0), 2, 2, 0.1f);//类似弹簧效果 //参数 :(1)、Punch: 运动的方向和力的大小,(2)、持续的时间,(3)、震动的次数(频率) // (4)、当它为0时只往返与目标点之间 如果大于0则回往返的比起始点要大!
3、 transform.DOPunchRotation(); //参数效果同上
4、 transform.DOPunchScale();//参数效果同上
三、物体的乱震效果Shake
1、transform.DOShakePosition();//第一个参数是他的持续时间,第二个震动的强度,第三个震动的次数,第四个震动的方向
2、transform.DOShakeRotation(); //参数效果同上
3、transform.DOShakeScale(); //参数效果同上
四、Blend混合动画
带Blend名称的方法,允许混合动画
原本同时执行两个Move方法,只会执行最新的一个动画命令(因为两个移动会有冲突,会取最新的一个命令执行)
例如:
transform.DOMove(Vector3.one, 2);
transform.DOMove(Vector3.one * 2, 2);
结果是物体运动到了(2,2,2)坐标上
DOBlendableMoveBy方法有两个特点、特性
1)允许多个同时执行
例如:
transform.DOBlendableMoveBy(new Vector3(1, 1, 1), 1);
transform.DOBlendableMoveBy(new Vector3(-1, 0, 0), 1);
假设起始点为(0,0,0),最后动画停止时的坐标就是(0,1,1),相当于移动到两个位置的相加的点。
2)它是增量动画 transform.DOBlendableMoveBy(new Vector3(1, 1, 1), 1); 假设其实点为(1,1,1),最后动画停止时的坐标就是(2,2,2) 它的参数不是目标点,而是要移动的量(主要说明第一个参数跟DOMove不同,DoMove是目标点,而这个是增量)
以下三个函数同理 transform.DOBlendableRotateBy() transform.DOBlendableScaleBy() transform.DOBlendablePunchRotation()
五、Material(材质的动画)颜色方面的方法
1)、获取材质球
Material material = GetComponent().material;
2)、改变材质的颜色
material.DOColor(Color.black, 2);//参数:1、目标颜色 ,渐变的时间
!调用的都是物体本身Shder上的_Color这个属性,如果没有这个则调用失败 如果我们想要调用这个使其变色则需要传入这个shder身上Color的名字,例如 material.DOColor(Color.black,“这个里面填写shder颜色变量的名字”, 2);
3) 修改alpha值 透明度的改变
material.DOFade(0, 2);
4)颜色渐变
Gradient是unity的渐变编辑器,我们可以申请个Gradient变量,设置好,直接在下面方法里调用
material.DOGradientColor(Gradient, “_Color”, 3);
5)改变材质offset的值
material.DOOffset(new Vector2(1, 1), 2);
6)改变提供的shader属性的名称对应的Vector4值
material.DOVector(new Vector4(0, 0, 0, 1), “_Color”, 3);
7)颜色混合
跟位置混合动画同理,可以同时执行而不干扰,产生混合在一起的颜色
material.DOBlendableColor(Color.red, “_Color”, 3);
material.DOBlendableColor(Color.greew “_Color”, 3);
六、相机方面的方法Camera
1)调整屏幕视角的宽高比 第一个参数是宽和高的比值(宽/高)
camera.DOAspect(0.6f, 2);
2)改变相机background参数的颜色
camera.DOColor(Color.blue, 2);
3)改变相机近切面的值
camera.DONearClipPlane(200, 2);
4)改变相机远切面的值
camera.DOFarClipPlane(2000, 2);
5)改变相机FOV的值 例如倍镜效果
camera.DOFieldOfView(30, 2);
6)改变相机正交大小
camera.DOOrthoSize(10, 2);
7)按照屏幕像素计算的显示范围 (改变分辨率大小的方法)
camera.DOPixelRect(new Rect(0f, 0f, 600f, 500f), 2);
8)按照屏幕百分比计算的显示范围(通过百分比改变分辨率大小的方法)
camera.DORect(new Rect(0.5f, 0.5f, 0.5f, 0.5f), 2);
7和8可以实现多相机分屏效果
9)相机震动
相机震动效果 参数:持续时间,力量,震动次数,随机性,淡出
力量:实际就是震动的幅度,可以理解成相机施加的力的大小 使用Vector3可以选择每个轴向不同的强度
震动:震动次数
随机性:改变震动方向的随机值(大小:0~180)
淡出:就是运动最后是否缓慢移动回到原本位置
camera.DOShakePosition(1, 10, 10, 50, false);
七、Text拓展方法介绍
text.DOColor(Color.black, 2); text.DOFade(0, 2); text.DOBlendableColor(Color.black, 2);
这个方法比较有意思 是把第一个参数传入的内容按照时间,一个字一个字的输入到文本框中
第一个参数是要现实的字,第二个参数是时间,自带先快后慢效果 text.DOText(“context”, 2);
匀速实现的话:
text.DOText(“context”, 2);.SetEase(Ease.Linear);
八、队列(DoTween自己的方法实现)
Sequence quence = DOTween.Sequence();
1)添加动画到队列中(使用该方法可以实现当一个动画播放完毕还需要跟下个动画时候按顺序写出该方法即可)
quence.Append(transform.DOMove(Vector3.one, 2));
2)添加时间间隔(当需要实现一个动画播放完毕需要停顿几秒再执行其他方法时候调用下面的方法)
quence.AppendInterval(1);
3)按时间点插入动画(在自己所规定的时间内添加动画,如果和其他的动画重叠的话 会覆盖动画)
第一个参数为时间,此方法把动画插入到规定的时间点
以这句话为例,它把DORotate动画添加到此队列的0秒时执行,虽然它不是最先添加进队列的
quence.Insert(0, transform.DORotate(new Vector3(0, 90, 0), 1));
4)加入当前动画(将两个动画同时进行播放)
Join会加入和让动画与当前正在执行的动画一起执行
如下两行代码,DOMove会和DOScale一起执行
quence.Append(transform.DOScale(new Vector3(2, 2, 2), 2));
quence.Join(transform.DOMove(Vector3.zero, 2));
5)预添加动画
预添加 会直接添加动画到Append的前面,也就是最开始的时候
quence.Prepend(transform.DOScale(Vector3.one * 0.5f, 1));
这里需要特别说一下预添加的执行顺序问题
它这里也采取了队列的性质,不过,预添加与原本的的队列相比是一个反向队列
例如:
Sequence quence = DOTween.Sequence();
quence.Append(transform.DOMove(Vector3.one, 2));
quence.Prepend(transform.DOMove(-Vector3.one*2, 2));
quence.PrependInterval(1);
执行顺序是 PrependInterval----Prepend-----Append
就是最后添加的会在队列的最顶端
6)预添加时间间隔
quence.PrependInterval(1);
九、回调函数
1)预添加回调
quence.PrependCallback(PreCallBack);
2)在规定的时间点加入回调(第一个参数是回调的时间,第二个参数是回调的方法)
quence.InsertCallback(0, InsertCallBack);
3)添加回调
quence.AppendCallback(CallBack);
十、Tween的设置
可以直接在动画后面.出来参数 也可以如下一行行赋值,将参数最后通过SetAs传进去
TweenParams para = new TweenParams();
1)设置动画循环
第一个参数是循环次数 -1代表无限循环
第二个参数是循环方式
Restart 重新开始
Yoyo 从起始点运动到目标点,再从目标点运动回来,这样循环
Incremental 一直向着运动方向运动
para.SetLoops(-1, LoopType.Yoyo);
2)设置参数
transform.DOMove(Vector3.one, 2).SetAs(para);
3)设置自动杀死动画(如果参数为True 则在动画结束后 直接结束动画)
transform.DOMove(Vector3.one, 1).SetAutoKill(true);
4)from补间
例如; 就是从目标点返回到起始点
transform.DOMove(Vector3.one, 2).From(true);
From参数 isRelative(相对的):
为true,传入的就是偏移量,即当前坐标 + 传入值 = 目标值
为falese,传入的就是目标值,即传入值 = 目标值
5)设置动画延时
transform.DOMove(Vector3.one, 2).SetDelay(1);

  6)设置动画运动以速度为基准
     例如:
     transform.DOMove(Vector3.one, 1).SetSpeedBased();
      使用SetSpeedBased时,移动方式就变成以速度为基准
      原本表示持续时间的第二个参数,就变成表示速度的参数,每秒移动的单位数

  7)设置动画ID (下面这个动画的 就以"Id”表示了)
    transform.DOMove(Vector3.one, 2).SetId("Id");
    我们直接可以在其他部位这么调用它 DoTween.Play("Id");

  8)设置是否可回收
    为true的话,动画播放完会被回收,缓存下来,不然播完就直接销毁
    transform.DOMove(Vector3.one, 2).SetRecyclable(true);

  9)设置动画为增量运动
      例如:
       transform.DOMove(Vector3.one, 2).SetRelative(true);
        SetRelative参数 isRelative(相对的):
        为true,传入的就是偏移量,即当前坐标 + 传入值 = 目标值
        为falese,传入的就是目标值,即传入值 = 目标值

  10)设置动画的帧函数
   例如:
    transform.DOMove(Vector3.one, 2).SetUpdate(UpdateType.Normal, true);
     第一个参数 UpdateType :选择使用的帧函数
     UpdateType.Normal:更新每一帧中更新要求。 
     UpdateType.Late:在LateUpdate调用期间更新每一帧。 
     UpdateType.Fixed:使用FixedUpdate调用进行更新。 
     UpdateType.Manual:通过手动DOTween.ManualUpdate调用进行更新。
     第二个参数:为TRUE,则补间将忽略Unity的Time.timeScale

十一、Ease 运动曲线的设置
1)以Ease枚举作为参数
例如:
transform.DOMove(Vector3.one, 2).SetEase(Ease.Flash, 3, 0f);
第二个参数 Amplitude(振幅):实际就是移动次数,起始点移动到目标算移动一次,再移动回来移动两次
第三个参数 period 值的范围是 - 1~1
值 > 0时,为活动范围的衰减值,活动范围会由大变小(如同篮球掉到地上)
值 = 0时,就是均匀的在起始坐标和目标坐标之间运动
值 < 0时,会施加一个向目标坐标的一个力,活动范围一点点增大,最后逼近目标点
这两个参数只对Flash, InFlash, OutFlash, InOutFlash这四种曲线有用,其他的曲线起作用的就只有Ease枚举参数

    2)使用AnimationCurve当作参数
      例如:
       transform.DOMove(Vector3.one * 2, 1).SetEase(curve);
      AnimationCurve 横轴是时间,不过不是具体的时间,而是时间比例
      AnimationCurve 纵轴是倍数
      假设纵轴的值为v,传入DOMove的第一个参数endValue是e,起始点坐标是s
      此物体最后动画结束时的实际坐标即为 v* (e -s)+ s

     3)以回调函数为参数
      例如:
       transform.DOMove(Vector3.one * 2, 1).SetEase(MyEaseFun);

       //返回值是运动距离的百分比 值应为0~1之间,最后的值需为1,不然停留的位置不会是目标位置
       private float MyEaseFun(float time, float duration, float overshootOrAmplitude, float period)
       {
           return time / duration;
       }

十二、回调函数
1)动画完成回调
transform.DOMove(Vector3.one, 2).OnComplete(() => { });

  2)动画被杀死时回调
    transform.DOMove(Vector3.one, 2).OnKill(() => { });

  3)动画播放时回调,暂停后重新播放也会调用
    transform.DOMove(Vector3.one, 3).OnPlay(() => { });

  4)动画暂停时回调
    transform.DOMove(Vector3.one, 2).OnPause(() => { });

  5)动画回退时回调
    以下情况会被调用
    使用DORestart重新播放时
    使用Rewind倒播动画完成时
    使用DOFlip翻转动画完成时
    使用DOPlayBackwards反向播放动画完成时
    transform.DOMove(Vector3.one, 2).OnRewind(() => { });

  6)只在第一次播放动画时调用,在play之前调用
    transform.DOMove(Vector3.one, 2).OnStart(() => { });

  7)完成单个循环周期时触发
    transform.DOMove(Vector3.one, 2).OnStepComplete(() => { });
  8)帧回调
    transform.DOMove(Vector3.one, 2).OnUpdate(() => { });

  9)在路径动画时,改变目标点时的回调,参数为当前目标点的下标
    transform.DOMove(Vector3.one, 2).OnWaypointChange((value) => { });

十三、动画控制方法
1)播放
transform.DOPlay();

  2)暂停
    transform.DOPause();

  3)重播
    transform.DORestart();

  4)倒播,此方法会直接退回起始点
    transform.DORewind();

  5)平滑倒播,此方法会按照之前的运动方式从当前位置退回起始点
    transform.DOSmoothRewind();

  6)杀死动画
    transform.DOKill();   
  7)翻转补间的方向
    transform.DOFlip();
  8)跳转时间点
    第一个参数跳转的时间点,第二个参数是跳转后是否播放动画
    transform.DOGoto(1.5f, true);

  9)反向播放动画
    反向播放动画,在动画播放到一半时执行,会退回起始点,在一开始执行看不到效果是因为,物体本身就在起始点
    transform.DOPlayBackwards();

  10)正向播放动画
    正向播放动画
    transform.DOPlayForward();

  11)TogglePause
    当暂停时,执行就继续播放,播放时,执行就暂停
    transform.DOTogglePause();

十四、获取数据的方法
一、类方法
1)返回所有暂停的动画,没有则返回null
DOTween.PausedTweens();
2)返回所有真正播放的动画,没有则返回null
DOTween.PlayingTweens();
3)获取给定ID的数组
例如:
DOTween.TweensById(“id”, true);
返回满足条件的动画数组
第一个参数是动画的ID
第二个参数是是否只收集正在播放的动画
4)返回给定对象的数组
例如:
DOTween.TweensByTarget(transform, true);
返回满足条件的动画数组
第一个参数是播放动画的对象
例如:transform.DOMove(Vector3.one, 2); 第一个参数就传入transform
material.DOColor(Color.White, 2); 第一个参数就传入材质对象material
第二个参数是是否只收集正在播放的动画
5)收集传入的对象是否有动画在活动
例如:
DOTween.IsTweening(transform);
第一个参数为检测的对象
第二个参数为是否检测动画在播放状态
为true时,给定对象在播放状态时 返回true
为false时,只检测给定对象是否有动画(在pause状态时也算)有则返回true
6)正在播放的动画的总数,目前处于延迟播放状态的动画也算
DOTween.TotalPlayingTweens();
二、实例方法
_tweener = transform.DOMove(Vector3.one, 2)
1)表示动画执行时间的属性,可读可写
_tweener.fullPosition = 1;
2)表示动画执行完的次数
_tweener.CompletedLoops()
3)获取动画的延迟时间
_tweener.Delay();
4)获取动画的持续时间
参数为true 表示计算循环的时间,无限循环为Infinity
_tweener.Duration(false)
5)动画已播放的时间
参数为true 表示计算循环的时间
_tweener.Elapsed()
6)返回动画进度的百分比
起始点为0 目标点为1 当yoyo循环模式下,值会从0变到1再从1变到0
_tweener.ElapsedDirectionalPercentage()
7)返回动画区间已用的百分比
单次循环的数值为0到1
参数为 是否包含循环 为true时 返回值是循环总区间的已用百分比 若为无限循环 返回值为0
_tweener.ElapsedPercentage(true)
8)动画是否在活动
_tweener.IsActive();
9)是否是反向动画
_tweener.IsBackwards();
10)动画是否完成
_tweener.IsComplete();
11)是否以初始化
_tweener.IsInitialized();
12)是否正在播放
_tweener.IsPlaying();
13)返回循环次数, 无限循环为Infinity
_tweener.Loops();

资源获取:https://download.csdn.net/download/g947195395/87684350文章来源地址https://www.toymoban.com/news/detail-485963.html

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

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

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

相关文章

  • 【Unity 工具,简单学习】DoTween,脚本控制动画工具

    连接 什么是Tween Engine —— 作者的blog(英文) 它能做什么? 简单来说,就是 用简单的代码可以控制任何动画表现,诸如移动、旋转、颜色、各种其他UI元素 。 导入包后,提示需要导入新版本的DOTween 然后点击 set up 再 apply 然后再打开一下面板点击 Get Started 查看该教程 编写测

    2024年02月12日
    浏览(29)
  • 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日
    浏览(43)
  • Unity——DoTween插件

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

    2024年02月11日
    浏览(31)
  • Unity 使用 Dotween 的 Sequence 制作UI动画并且可重复利用

    目录 前言 一、DOTween是什么? 二、使用步骤 1.导入DOTween 2.配置DOTween 3.使用代码编写动画 4.代码API解释 总结 DOTween可以制作简易的UI动画,避免创建大量的Animator,本篇文章介绍一下我制作UI动画时的一些技巧 效果展示   DOTween是UnityAssetStore中一个免费的插件,用于创建简单的

    2024年02月08日
    浏览(36)
  • unity --- DoTween插件安装与使用

    目录 一.简介  1.1 插件下载 1.2 官方文档 二.导入和设置 三.示例代码 1 循环动画:SetLoops(-1 , loopType ) 2. 动画循环次数:SetLoops( count ) 3. 动画事件监听与回调:OnStart OnComplete 4. 动画延迟回调:SetDelay 5. 动画自定义更新回调:OnUpdate 6. 动画路径回调:OnWayPointChange 7. 动画循环

    2024年02月11日
    浏览(36)
  • 23. Unity - 3D游戏开发小计02 --- 动画结束UI、导航网格代理、场景搭建插件(ProGrids,ProBuilder,Polybrush)

    1. 动画结束UI 一个游戏在通过后,都是需要一个界面显示当前游戏已经结束,即需要给游戏添加一个结束的界面,可以做一个简单的游戏结束界面,用一个图片展示: 首先在 层级窗口 添加两层UI中的Image,其中第一层的Image仅作背景,可将其填充颜色设置为纯黑色,第二层的

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

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

    2024年02月01日
    浏览(38)
  • 使用DoTween插件在Unity中实现物体或场景的振动效果

    在Unity中,我们可以使用DoTween插件来实现物体或场景的振动效果。DoTween是一个功能强大的插件,可以简化动画的创建和管理过程,并提供了丰富的插值和缓动函数,使得振动效果的实现变得更加容易。 首先,我们需要确保已经安装了DoTween插件,并将其导入到Unity项目中。接

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

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

    2024年02月12日
    浏览(69)
  • Unity 3D 人形角色动画(Avatar)||Unity 3D 导航系统||Unity 3D 障碍物

    Mecanim 动画系统 适合人形角色动画的制作,人形骨架是在游戏中普遍采用的一种骨架结构。。 由于人形骨架在骨骼结构上的相似性,用户可以将动画效果从一个人形骨架映射到另一个人形骨架,从而实现动画重定向功能。 除了极少数情况之外,人物模型均具有相同的基本结

    2024年01月16日
    浏览(30)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包