Unity3D_(插件)DOTween动画插件
使用DOTween动画插件来实现物体的移动动画
Learn
一、DOTween插件对变量的动画
二、控制Cube和UI面板的动画
三、动画的快捷播放方式
四、动画的前放和后放
五、From Tweens
六、动画的属性设置
七、对话框文字动画
八、震动屏幕效果
九、文本颜色和透明度动画
游戏项目已托管到Github上 传送门
Unity项目中导入DoTween动画插件
一、DOTween插件对变量的动画
新建Gary场景,在MainCamera摄像机上绑定一个getStart.cs脚本对象,使用Lambda表达式对变量进行变化
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening; public class getStart : MonoBehaviour { public Vector3 myValue = new Vector3(,,); // Use this for initialization
void Start () {
DOTween.To(()=>myValue,x=> myValue = x,new Vector3(,,),);
} // Update is called once per frame
void Update () { }
}
getStart.cs
二、控制Cube和UI面板的动画
控制Cube的动画,Transform从(0,0,0)运动到(10,10,10)
getStart.cs添加Transform引用,绑定Cude对象
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening; public class getStart : MonoBehaviour { public Vector3 myValue = new Vector3(,,); public Transform cubeTransform; // Use this for initialization
void Start () {
DOTween.To(()=>myValue,x=> myValue = x,new Vector3(,,),);
} // Update is called once per frame
void Update () {
cubeTransform.position = myValue;
}
}
getStart.cs
控制UI面板动画,Transform从(500,0,0)运动到(0,0,0)
getStart.cs添加RectTransform引用,绑定Image对象
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening; public class getStart : MonoBehaviour { public Vector3 myValue = new Vector3(,,); public Transform cubeTransform;
public RectTransform taskPanelTransform; // Use this for initialization
void Start () {
DOTween.To(()=>myValue,x=> myValue = x,new Vector3(,,),);
} // Update is called once per frame
void Update () {
//cubeTransform.position = myValue;
//taskPanelTransform.position = myValue;
taskPanelTransform.localPosition = myValue;
}
}
getStart.cs
处理三维向量位置值变化
public Vector3 myValue = new Vector3(,,); DOTween.To(()=>myValue,x=> myValue = x,new Vector3(,,),);
处理Float位置值变化
public float myValue2 = ; DOTween.To(() =>myValue2, x => myValue2 = x, , );
三、动画的快捷播放方式
新建Gary2场景,添加Image、Button组件
点击Button控件,RectTransform组件从屏幕外(300,0,0)运动到(0,0,0)坐标点
Button控件上绑定MyButton脚本,绑定要移动的组件,添加OnClick()点击事件
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening; public class MyButton : MonoBehaviour { public RectTransform panelTransform; public void OnClick()
{
//让panelTransform从当前位置动画到(0,0,0)位置时间为1s
panelTransform.DOMove(new Vector3(,,),);
panelTransform.DOLocalMove(new Vector3(,,),);
}
}
MyButton.cs
四、动画的前放和后放
点击Button控件,RectTransform组件从屏幕外(300,0,0)运动到(0,0,0)坐标点
再次点击Button控件,RectTransform组件从屏幕(0,0,0)运动到(300,0,0)坐标点
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening; public class MyButton : MonoBehaviour { public RectTransform panelTransform; public bool isIn = false; private void Start()
{
//默认动画播放完就会被销毁
Tweener tweener = panelTransform.DOLocalMove(new Vector3(, , ), );
//Tweener对象保存这个动画的信息,每次调用do类型的方法都会创建一个tween对象,这个对象是dotween对象来管理的
tweener.SetAutoKill(false); //把autokill自动设置为false
tweener.Pause();
} public void OnClick()
{
//点击第一次时让RectTransform进入屏幕当中
if (isIn == false)
{
panelTransform.DOPlayForward();
isIn = true;
}
else
{
//让RectTransform离开屏幕
panelTransform.DOPlayBackwards();
isIn = false;
} }
}
MyButton.cs
动画前放
panelTransform.DOPlayForward();
动画后放
panelTransform.DOPlayBackwards();
五、From Tweens
新建Gary3场景,添加Cube组件添加MyCube.cs脚本,将Cube对象位置设置为(1,0,0)
Cube从当前位置移动到(5,1)位置后又运行回去(默认From(false))
transform.DOMoveX(, ).From();
Cube从当前位置移动到(5+1,1)位置后又运行回去
transform.DOMoveX(, ).From(true);
演示From(true)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening; public class MyCube : MonoBehaviour { // Use this for initialization
void Start () {
//从当前位置运行到X放
//transform.DOMoveX(5,1);
//默认是从当前位置运行到目标位置,加上From()方法以后表示从目标位置移动到当前位置
//transform.DOMoveX(5, 1).From(); transform.DOMoveX(, ).From(true);
} // Update is called once per frame
void Update () { }
}
MyCube.cs
六、动画的属性设置
新建Gary4场景,添加Image控件,Image控件下添加MyPanel.cs脚本
物体先向反方向移动一段距离后向前移动
tweener.SetEase(Ease.InBack);
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening; public class MyPanel : MonoBehaviour { // Use this for initialization
void Start () {
Tweener tweener = transform.DOLocalMoveX(,);
tweener.SetEase(Ease.InBack);
} // Update is called once per frame
void Update () { }
}
MyPanel.cs
物体弹跳几次才到达目的点
tweener.SetEase(Ease.InBounce);
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening; public class MyPanel : MonoBehaviour { // Use this for initialization
void Start () {
Tweener tweener = transform.DOLocalMoveX(,);
tweener.SetEase(Ease.InBounce);
} // Update is called once per frame
void Update () { }
}
MyPanel.cs
物体到达目的点后进行跳动
weener.SetEase(Ease.OutBounce);
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening; public class MyPanel : MonoBehaviour { // Use this for initialization
void Start () {
Tweener tweener = transform.DOLocalMoveX(,);
tweener.SetEase(Ease.OutBounce);
} // Update is called once per frame
void Update () { }
}
MyPanel.cs
Ease属性及Ease中默认属性值
#region 程序集 DOTween, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null
// F:\1891\DoTween\Gary\Gary_DoTween\Assets\Demigiant\DOTween\DOTween.dll
#endregion namespace DG.Tweening
{
public enum Ease
{
Unset = ,
Linear = ,
InSine = ,
OutSine = ,
InOutSine = ,
InQuad = ,
OutQuad = ,
InOutQuad = ,
InCubic = ,
OutCubic = ,
InOutCubic = ,
InQuart = ,
OutQuart = ,
InOutQuart = ,
InQuint = ,
OutQuint = ,
InOutQuint = ,
InExpo = ,
OutExpo = ,
InOutExpo = ,
InCirc = ,
OutCirc = ,
InOutCirc = ,
InElastic = ,
OutElastic = ,
InOutElastic = ,
InBack = ,
OutBack = ,
InOutBack = ,
InBounce = ,
OutBounce = ,
InOutBounce = ,
Flash = ,
InFlash = ,
OutFlash = ,
InOutFlash = ,
//
// 摘要:
// Don't assign this! It's assigned automatically when creating 0 duration tweens
INTERNAL_Zero = ,
//
// 摘要:
// Don't assign this! It's assigned automatically when setting the ease to an AnimationCurve
// or to a custom ease function
INTERNAL_Custom =
}
}
Ease[从元数据]
其它一些动画方法
设置动画循环
tweener.SetLoops();
设置动画监听事件
tweener.OnComplete(OnTweenComplete);
void OnTweenComplete()
{
Debug.log("动画播放完成!");
}
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening; public class MyPanel : MonoBehaviour { // Use this for initialization
void Start () {
Tweener tweener = transform.DOLocalMoveX(,);
tweener.SetEase(Ease.OutBounce); tweener.SetLoops();
tweener.OnComplete(OnTweenComplete);
} // Update is called once per frame
void Update () { } void OnTweenComplete()
{
Debug.log("动画播放完成!");
}
}
MyPanel.cs
七、对话框文字动画
新建一个场景Gary5,添加Text控件,绑定脚本MyText.cs,控件内容由MyText.cs动态生成
(Text控件中存在文字时,默认会进行覆盖)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening;
using UnityEngine.UI; public class MyText : MonoBehaviour { private Text text; // Use this for initialization
void Start () {
text = this.GetComponent<Text>();
text.DOText("大家好,我叫Gary!!!",);
} // Update is called once per frame
void Update () { }
}
MyText.cs
八、震动屏幕效果
新建一个场景Gary6,给摄像机绑定MyShakeCamera.cs脚本
(震动完后摄像机还是会回到原位)
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using DG.Tweening; public class MyShakeCamera : MonoBehaviour { // Use this for initialization
void Start () {
//随机向走位移动3m的距离
transform.DOShakePosition();
} // Update is called once per frame
void Update () { }
}
MyShakeCamera.cs
在x和y轴上震动
transform.DOShakePosition(,new Vector3(,,));
九、文本颜色和透明度动画
新建Gary7场景,新建一个Text控件,给Text控件绑定TextColorTween.cs脚本
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using DG.Tweening; public class TextColorTween : MonoBehaviour { private Text text; // Use this for initialization
void Start () {
text = GetComponent<Text>(); //设置文字动画
text.DOColor(Color.red,); //设置文字透明度
text.DOFade(,);
} // Update is called once per frame
void Update () { }
}
TextColorTween.cs
设置文字动画,渐变时间2s
text.DOColor(Color.red,);
设置文字透明度,渐变时间3s
text.DOFade(,);
Unity3D_(插件)DOTween动画插件的更多相关文章
- DoTween 动画插件简单示例
.doTween的静态方法 DOTween.To(() => maskImage.color, toColor => maskImage.color = toColor, , , , ), ...
- DoTween动画插件学习
一.简单的变量插值运算 using System.Collections; using System.Collections.Generic; using UnityEngine; using DG. ...
- 让网站动起来!12款优秀的 jQuery 动画插件推荐
如今,大多数设计师和开发人员被要客户要求开发动态的网站.创造视觉震撼和醒目的动态网站是艰巨的任务,因为它需要大量的努力和创造力.在网络上有大量的工具和插件可用于创建网站动画.许多开发人员正在使用 HT ...
- Minimit Anima – 硬件加速的 CSS3 动画插件
Minimit Anima 是一个实现 CSS3 Transforms 和 Transitions 动画的 jQuery 插件.基于硬件加速的 CSS3 动画执行更快,而且它有一个类似于 jQuery ...
- Velocity – 另外一款加速的 jQuery 动画插件
Velocity 是一款 jQuery 插件,重新实现了 $.animate() 方法,提供更高的性能(比 CSS 动画还更快),同时包括一些新的功能,以改进动画工作流程.Velocity 除了包括所 ...
- 八款强大的jQuery图片滑块动画插件
jQuery是一款相当轻巧的JavaScript框架,目前几乎每一个WEB项目都在使用jQuery,因为jQuery插件实在太丰富,尤其是 一些图片滑块插件和jQuery焦点图插件,更是多如牛毛,很多 ...
- Unity CCTween UGUI 动画插件
在这简单的介绍一下 CCTween 动画插件的使用 因为GIF 制作软件不太好(网上随便下载的)所以导致效果不太好,有时间我重新制作一下 这是一下简单的效果 下面介绍怎么使用 首先 先下载 CCTwe ...
- jquery背景动画插件使用
在网页制作动画特效的时候,有时候想通过背景插入图片,然后通过控制背景显示的位置来实现一些动画效果,这样就不用使用绝对定位控制left和top来实现动画效果!但是jquery本身的动画函数是不支持背景动 ...
- 好用的jquery.animateNumber.js数字动画插件
在做公司的运营报告页面时,有一个数字累计增加的动画效果,一开始,毫无头绪,不知如何下手,于是上网查资料,发现大多都是用的插件来实现的,那么今天,我也来用插件jquery.animateNumber.j ...
随机推荐
- 正则爬取某段子网站前20页段子(request库)
首先还是谷歌浏览器抓包对该网站数据进行分析,结果如下: 该网站地址:http://www.budejie.com/text 该网站数据都是通过html页面进行展示,网站url默认为第一页,http:/ ...
- 两两内积为0(牛客多校第七场)-- CDMA
题意: 构造一个n*n的矩阵,元素只能是-1或1,任意两行内积为0(两两相乘加起来和为0). 思路: #define IOS ios_base::sync_with_stdio(0); cin.tie ...
- Codeforces 1190C. Tokitsukaze and Duel
传送门 注意到后手可以模仿先手的操作,那么如果一回合之内没法决定胜负则一定 $\text{once again!}$ 考虑如何判断一回合内能否决定胜负 首先如果最左边和最右的 $0$ 或 $1$ 距离 ...
- Codeforces 1229B. Kamil and Making a Stream
传送门 注意到只要考虑祖先和后代之间的贡献 发现对于一个节点,他和所有祖先最多产生 $log$ 个不同的 $gcd$ 所以每个节点开一个 $vector$ 维护祖先到自己所有不同的 $gcd$ 和这个 ...
- [转载]static in Java
来源:https://www.cnblogs.com/chenssy/p/3386721.html 一. static代表着什么 在Java中并不存在全局变量的概念,但是我们可以通过static来实现 ...
- scrapyd使用教程
1. 安装服务器: pip install scrapyd 启动: scrapyd 访问:127.0.0.1:6800 2. 安装客户端 pip install scrapyd-client 3. 进 ...
- js之运算符(算术运算符)
Javascript中的运算符大多是由标点符号少数由关键字表示.可以根据其操作数的个数进行分类.大多数运算符是一个二元运算符,将两个表达式合成一个比较复杂的表达式.还有需要注意的一点是运算符的优先级, ...
- js 数据类型的判断
1. typeof 运算符 typeof 可以判断基本数据类型: typeof 123; // "number" typeof 'abc'; // "string&quo ...
- 解决 webpack 打包文件体积过大
webpack 把我们所有的文件都打包成一个 JS 文件,这样即使你是小项目,打包后的文件也会非常大.下面就来讲下如何从多个方面进行优化. 去除不必要的插件 刚开始用 webpack 的时候,开发环境 ...
- Django 数据库模块 单独使用
pip install django pip install psycopg2 pip install mysqlclient Entity.py from django.db import mode ...