使用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(,);

最新文章

  1. Android Studio开发RecyclerView遇到的各种问题以及解决(二)
  2. 线上bug的解决方案--带来的全新架构设计
  3. LeetCode Add Strings
  4. sqlserver查询所有表名、字段名、类型、长度和存储过程、视图的创建语句
  5. 解决Win7下打不开chm文件的方法
  6. u盘文件系统故障的修复方法
  7. C#: 数据绑定
  8. windbg调试C#代码(一)
  9. C++ inline(内联什么时候使用)
  10. 单例模式 GetInstance()
  11. Android图表日历控件组件
  12. java实现定时任务
  13. 安卓开发过程中空指针的问题Java.lang.NullPointerException
  14. php中获取数据 php://input、$_POST与$GLOBALS[&#39;HTTP_RAW_POST_DATA&#39;]三者的区别
  15. msyql 移动某一列数据到某列 &amp; 字段加前缀
  16. mysql完装成功后的提示。
  17. 控制器隐藏了导航 下页pop 导航位置看到黑条
  18. ionCube 安装
  19. hive表查询中文显示乱码
  20. Linuxyum源切换阿里云软件源

热门文章

  1. Centos7 更换为网易YUM源
  2. redis 学习(13)-- BitMap
  3. C数据结构排序算法——直接插入排序法用法总结(转http://blog.csdn.net/lg1259156776/)
  4. O010、动手实践虚拟网络
  5. centos配置vsftp,ftp服务
  6. django 中实现文件下载的3种方式
  7. Linux上ssh免秘钥互登
  8. Linux配置iSCSI存储
  9. VSCode配合chrome浏览器调试cocos2d js项目
  10. OSM全球地图MBTiles,非postgresql方式。