Unity 动画插件 DOTween 的简单使用

1.

找来找去,居然找不到一个比较适合的 DOTween例子,就自己写一点来熟悉熟悉。首先当然得导入 dotween 的插件包。先说一下,dotween 的动画效果对于2D 和 3D 都是适用的。 
场景中新建一个Cube1,重置位置,新建按钮取名Button1,然后我们写代码使用 dotween 来控制这个cube的移动。新建脚本 Button1 给按钮添加上,我们要监听里面的事件:

using UnityEngine;
using System.Collections;
using DG.Tweening;

public class Button1 : MonoBehaviour {
    public Transform cubeTrans;   //得到cube的transform
    public Vector3 myValue = new Vector3(0, 0, 0);

    // Update is called once per frame
    void Update () {
        cubeTrans.position = myValue;
    }

    public void ControllerCube ()
    {
        //DOTween自带的方法:对变量做一个动画(通过插值的方式修改一个值得变化) 要使用 using DG.Tweening; 命名空间
        //第一个参数:使用了 C# 的Lambda语法,对 myValue 值进行修改,返回 myValue
        //第二个:也使用 Lambda 语法,把修改的值赋给 myValue,x是DOTween计算好的一个值
        //第三个:目标值,就是 myValue 最后要变化到的值
        //第四个:变化到目标值需要的时间
        DOTween.To(() => myValue, x => myValue = x, new Vector3(10, 10, 10), 2);
    }
}

然后运行程序: 

这里注意,DOTween默认的动画是先快后慢的。DoTween 也可以修改其他的值类型(int,float … . .) 
接下来,我们用一种比这简单的方法,我们使用UI组件来试试。新建一个图片Image1,把它放到屏幕外,在添加一个按钮Button2,给他添加一个脚本Button 
2,监听里面的事件,让它点击时移动图片到屏幕中心。

using UnityEngine;
using System.Collections;
using DG.Tweening;

public class Button2 : MonoBehaviour {
    public RectTransform image1;

    public void TransformImage ()
    {
        //ui组件要使用本地坐标
        //第一个参数:目标地点,就是要移动到哪个位置
        //第二个参数:移动到那个位置需要的时间
        image1.DOLocalMove(new Vector3(0, 0, 0), 1);
    }
}

运行程序如下 

但是,假如现在我们想要这样的效果,点击按钮,如果图片不再屏幕范围内,就把它移到屏幕中间,如果在屏幕中,就把它移到屏幕外,那该怎么做? 
你可能会说,加一个标志位,每次点击的时候切换一下移动位置就行了。这样的确可行,但是有一个问题是 DOTween 调用的 DOxxx( ) 方法,调用一次就会默认生成一个动画(就是你移动的动画),这个动画会在移动完后自动被销毁,还会每次调用生成一个 Tween 对象,这个对象由 DOTween 管理,所以你不知道它什么时候会被回收,这样就会造成不必要的资源损耗。 
既然如此,我们就想办法让他保存那个生成的动画,然后重复播放就行了。DOTween 已经有了这样的解决办法。我们修改刚才的代码:

using UnityEngine;
using System.Collections;
using DG.Tweening;

public class Button2 : MonoBehaviour {
    public RectTransform image1;
    private bool isIn = false;   //是否在屏幕内

    void Start ()
    {
        //接收生成的动画
                            //第一个参数:目标地点,就是要移动到哪个位置
                            //第二个参数:移动到那个位置需要的时间
        Tweener tweener = image1.DOLocalMove(new Vector3(0, 0, 0), 1);
        //设置自动销毁动画为false
        tweener.SetAutoKill(false);
        //暂停动画,不然会一开始就播放动画
        tweener.Pause();

    }

    public void TransformImage ()
    {
        if (isIn == false)
        {
            //向前播放动画,就是播放上面创建的动画
            image1.DOPlayForward();
            isIn = true;
        }
        else
        {
            //倒放动画
            image1.DOPlayBackwards();
            isIn = false;
        }
    }
}

运行程序,就会有如下效果 

DOTween 还有一个 FromTween 的概念,新建一个Button3,在新建脚本Button3,新建Cube2,先把Cube2的位置移动到(1,1,1),这样比较明显,然后编辑脚本:

using UnityEngine;
using System.Collections;
using DG.Tweening;

public class Button3 : MonoBehaviour {
    public Transform cube2;

    public void TransCube2 ()
    {
        //移动cube1的x轴,从当前位置移动到 5,需要的时间为 1秒
        cube2.DOMoveX(5, 1);
    }
}

点击button3的效果。这时没有什么效果 

现在修改一行代码:cube2.DOMoveX(5, 1).From( ); 然后就成这样 

可以发现,加了From 后 就是从目标位置移动到目前位置。

在修改这一行代码:cube2.DOMoveX(5, 4).From( true); 效果: 

仔细看方块的Position,会发现这时候 5 变成了相对位置,移动是从 6 移动到1,所以 From(true) 是移动相对位置,从目标位置移动到目前位置。

Tweener 还可以设置一些属性,就是像 Tweener 的移动就是先快后慢,我们还可以设置成 匀速等等,Button2 的代码增加这么一行 tweener.SetEase(Ease.Linear); 这就是匀速,也有简单的方法,就是定义一个 
public Ease ease; //移动的效果 
然后 tweener.SetEase(ease); 然后再面板上选择想要的效果就行了。 
tweener.SetLoop(2); //动画循环播放两次 
tweener.OnComplete(方法名); //动画播放完后调用一个方法 
还可以对文字设置效果

public Text text;

text.DOText("要显示的文字");

//文字渐变成红色,时间为两秒
text.DOColor(Color.red, 2);

//alpha 慢慢变成1,时间是3秒 ,就是显示出来
text.DOFade(1, 3);

这样,如果text一开始有文字,则 我们设置的文字会一点一点的覆盖原本的文字,如果没有,会一点一点的显示。(以上效果我没有在工程中写,这里只做介绍,大家可以自己试试) 
接下来,我们给摄像机添加一个震动效果,添加一个脚本Shake,给摄像机此脚本:

using UnityEngine;
using System.Collections;
using DG.Tweening;

public class Shake : MonoBehaviour {

    // Use this for initialization
    void Start () {
        //第一个参数:震动时长
        //第二个:震动的轴
        //震动强度默认是1   0~1(没写出来)
        transform.DOShakePosition(1, new Vector3(1, 1, 0));
    }

    // Update is called once per frame
    void Update () {

    }
}

然后就是以上这些,甚至还有更多的动画效果是可以通过个一个物体添加 DOTween Animation 组件来实现的(当然事先你得添加 DOTween 插件),这个就和设置其他组件一样,大家自己测试吧。

最后一个就是 路径编辑器,添加 DOTween Path 组件,然后 按住 SHAFT + CTRL 点击屏幕就可以添加一个点,多添加几个,然后运行游戏,物体就会按照你刚刚添加的路径进行运行 

SHAFT + ALT 点击添加的点就会删除那个路径。 
至于其他的属性 大家就自己探索吧,或者查看官方文档也是很好的办法,我自己也没懂太多,就只写这些了。 
工程和插件地址:http://pan.baidu.com/s/1c1ZPQUk 98gj

时间: 2024-08-09 14:48:41

Unity 动画插件 DOTween 的简单使用的相关文章

Unity CCTween UGUI 动画插件

在这简单的介绍一个 CCTween 动画插件的使用 因为GIF 制作软件不太好(网上随便下载的)所以导致效果不太好,有时间我重新制作一下 这是一下简单的效果 下面介绍怎么使用 首先 先下载 CCTween  导入工程 点击下载 Unity5.0的包 如果使用的Unity 版本不够5.0的 就点击下边的连接 下载源码 点击下载 源码 GitGub地址 欢迎大神来更新 好了下面正式开始介绍使用了 #------------ 这是使用的一些变量 以及类型 -----------------------

Unity即将内置骨骼动画插件Anima2D

Unity一直在寻找新的方法来帮助开发者,并为他们提供最好的工具.在此我们向大家宣布,Unity将内置流行的骨骼动画插件Anima2D,从2017年1月开始免费供所有Unity开发者使用! 同时也欢迎插件作者Sergi Valls与这个强大的插件一起,加入我们专业的2D团队. 我们致力于让游戏开发大众化,Anima2D将是Unity为专注于2D内容的开发者改善工具集与工作流程的关键一环. Anima2D实现2D动画和2D角色工具的独特方法再结合Sergi的经验,将成为这项改进的关键部分. Ani

HTML5 SVG简单的动态绘制轮廓线条动画插件

walkway是一款非常简单的HTML5 SVG动态绘制轮廓线条动画插件.它支持SVG的path,line 和 polyline元素.walkway使用起来简单方便,可以制作出非常酷的SVG线条动态绘制效果.更好的动态绘制线条插件可以参考:html5 svg线条动态绘制文字轮廓边框动画.HTML5 SVG图形轮廓线条绘制动画插件-vivus 和 html5 svg线条动态绘制iphone边框动画效果. 在线演示:http://www.htmleaf.com/Demo/201501261282.h

【Unity编程】Unity动画系统(一)

Unity动画系统 Unity动画系统,也称为"Mecanim",提供了以下功能: 简单的工作流程,设置动画的所有元素,包括对象,角色和属性. 支持导入外部创建的动画片段和使用内置动画编辑器制作的动画片段. 人型动画重新定位,动画角色的运动控制可以被所有的角色模型共享,即角色的外观(SkinedMesh)和运动(Animator)是分离的,它们互相组合之后形成最终的动画. 用于编辑动画状态的的简化工作流程,即动画控制器. 方便预览动画片段,以及片段之间的插值过渡. 这使得动画师可以独立

Unity 动画知识之一

Unity现在已经用的很广泛啦,可是却一直没有什么美术向的教程. 程序用方面的内容在各个论坛都有讨论,但是美术似乎很弱势啊. 明明美术也很需要掌握引擎方面的内容嘛! 山谷里的野百合还有春天呢 我们美术也要出教程! 这次选了本菜鸡比较不那么菜的细分领域?unity3d  3D美术模块 来讲 美术小伙伴们肯定是懒得看那么多字啦,所以我就写的尽量有意思一点吧…… 计划是从入门到住院全部讲完的,但是能不能讲完我也不晓得,挖坑不填什么的最开心了 至于为什么是从入门到住院,因为学了这套东西,你就具备了在项目

Unity动画

Unity 并没有自带建模工具. 3D建模工具 maya, 3dmax, blender Skinned Mesh Renderer Mesh Renderer Mesh Filter Modelling 最好是 T-pose Rigging 建立骨架(Skeleton) 的过程.定义骨头之间的运动关系.是由外部制作的(Maya 3dmax).Unity也没有工具用来做这个事情.Homanoid Character 至少需要15根骨头.臀部应该做为根. Skinning 将骨架绑定到 Mesh

Unity热门插件推荐

Unity热门插件推荐 前言 Unite2015的笔记 ,以下扩展主要针对mobile 以下截图更新自:2016-04-28 Mesh Baker https://www.assetstore.unity3d.com/en/#!/content/5017 针对美术人员,合并材质,纹理,Mesh合并 Simple LOD https://www.assetstore.unity3d.com/en/#!/content/25366 Mesh减化,可以支持有动画的模型 Easy Movie Textu

Unity视频播放插件

资源名称:Unity视频播放插件下载? 资源大小:  36.2MB 资源类型: .unitypackage 安装要求:Unity 4.6.8 或更高版本 链接: https://pan.baidu.com/s/1miJr5AK 密码: v5cx 资源说明: 最近在研究Unity视频播放.虽然可以实现简单的视频播放功能,但是对于商业化或者移动端的项目来说远远不够(比如:当文件较大时,会出现明显的卡顿). 网上找了好多资料,试了好多插件,综合比较下来,AVPro Video是效果最好的.不仅可以实现

基于animate.css的jQuery文字动画插件

Morphext是一款简单.高性能和跨浏览器的jQuery文字动画插件.该文字动画jQuery插件基于Animate.css.你可以设置使用多个不同的句子,Morphext会以你指定的CSS3动画方式轮流显示它们. Morphext所做的事情是隐藏前一个文本短句,然后使用下一个来替换它.插件中已经为跨浏览器处理好了所有浏览器厂商的前缀问题,它可以为我们提供非常酷的文字动画效果. Animate.css依赖于CSS3 animations和transformations.如果浏览器不支持css3,