关于DoTween动画插件的学习
嗯,这里我将介绍一下DoTween动画插件的使用,这个插件是unity里一个控制动画的插件,下载的话可以去官网进行下载
1. 新建一个工程,导入DoTween插件
2. 首先先介绍一下DoTween上是如何控制数值改变的
我们这里根据一个DoTween.TO的方法,通过差值运算的方法,设置坐标和运行时间,实现了位置的变化,这里可以放在unity里运行一下观察脚本上数值是否再两秒内由0到10,当然这里数值的变化是一个抛物线的变化,即先快后慢
using System.Collections;
usingSystem.Collections.Generic;
using UnityEngine;
using DG.Tweening;//这里引入了动画插件
public class MyValue : MonoBehaviour {
public Vector3 MyValue1 = new Vector3(0, 0, 0);
// Use this for initialization
void Start () {
//通过差值的方式去修改一个值的变化,第一个是返回MyValue的值,后面是计算新的坐标和MyValue的差值再通过x进行赋值,实现位置变换
DOTween.To(() => MyValue1, x => MyValue1 = x, new Vector3(10, 10, 10), 2);
}
3. 想要通过这个值来改变坐标只需要定义一个
Public Transform cubeTransform
然后在update里
cubeTransform.position=MyValue1,即可
4. 当然我们控制动画一般不用这么麻烦的方法
这里我们想要点击按钮控制图片的移动,可以这么做
通过DOLocalMove这个方法,让图片移动到局部坐标的位置,当然这里我们要记得在button按钮上注册这个方法
using System.Collections;
usingSystem.Collections.Generic;
using UnityEngine;
using DG.Tweening;
public class MyButton : MonoBehaviour
{
public RectTransform buttonTransform;
public void OnClick()
{
buttonTransform.DOLocalMove(new Vector3(0, 0, 0), 1);
}
}
5. 这里如果我们想要将按钮改成可以反复前放和倒放,可以将代码进行这样的调整
1首先我们将动画的创建放在Start方法下,这样保证不是每次播放动画都要创建动画,这样节省了内存
2.我们在Onclick创建了DoForward和DoBackground两个方法来实现前放和倒退,通过Bool值判断播放哪个动画
6. using System.Collections;
7. usingSystem.Collections.Generic;
8. using UnityEngine;
9. using DG.Tweening;
10.
11. public class MyButton : MonoBehaviour
12. {
13. public RectTransform buttonTransform;
14. private bool isIn = false;
15. public void Start()
16. {
17.
18. Tweener tweener = buttonTransform.DOLocalMove(new Vector3(0, 0, 0), 0.3f);//默认动画是播放一次就会销毁
19. tweener.SetAutoKill(false);//每次调用DO方法都会创建一个tweener方法,这里调用tweener.Kill方法,使得不会自动销毁
20. tweener.Pause();//我们不想要每次点击都创建这个方法,因此我们在start里创建,但是开始时我们不想播放,于是加上Pause方法让它不播放
21.
22. }
23. public void OnClick()
24. {
25. if (isIn == false)
26. {
27. buttonTransform.DOPlayForward();//这个是前放方法
28.
29. isIn = true;
30. }
31. else {
32.
33. buttonTransform.DOPlayBackwards();//这个是回放方法
34. isIn = false;
35. }
36.
37.
38. }
39. }
6.fromTween的用法
这个方法时控制目标物体的移动,分为带from和不带from,分别控制从当前位置向目标位置的移动和从目标位置向当前位置的移动
using System.Collections;
usingSystem.Collections.Generic;
using UnityEngine;
using DG.Tweening;
public class FrromTween : MonoBehaviour {
// Use this for initialization
void Start () {
// transform.DOMoveX(5, 1).From();//不加from是从当前位置移动到目标位置,加from是从目标位置移动到当前位置
transform.DOMoveX(5, 5).From(true);//括号里面是Bool值,默认false,改成true时移动会加上当前位置再移动到当前位置
}
7.控制动画的曲线
// Use this for initialization
void Start () {
Tweener tweener = transform.DOLocalMoveX(5, 3);
tweener.SetEase(Ease.InBounce);//控制动画的播放状态
tweener.SetLoops(2);//控制动画循环几次
tweener.OnComplete(OnComplete);//这里可以控制动画播放完调用什么方法
}
// Update is called once per frame
void Update () {
}
void OnComplete()
{
}
}
8.动画的生命周期
这里介绍的只是小部分,想要具体信息可以去官网自行查阅
1.一个动画创建时候会被自动播放,如果想要暂停要自行设置
2.一个动画播放完成后会自行销毁
3.当动画控制的物体变为空时,可能会报错
9..DoTween中控制文本的脚本
一般来说,我们在场景切换时候会想要显示文字,这里DoTween有个组件可以控制文字的动态生成,使用text.DoText即可动态生成文字,当然想要做扩展还请自行查找方法
using System.Collections;
usingSystem.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using DG.Tweening;
public class TextTween : MonoBehaviour {
private Text text;
// Use this for initialization
void Start () {
text = this.GetComponent<Text>();
text.DOText("欢迎来到这个神秘而又未知的世界", 5);
text.DOColor(Color.red,10);//控制颜色的变化
}
10.控制屏幕的震动
当我们想要观察到屏幕的震动,类似于格斗游戏或者boss攻击地面的时候,可以用这个方法来实现
using System.Collections;
usingSystem.Collections.Generic;
using UnityEngine;
using DG.Tweening;
public class MyShakeCamera : MonoBehaviour {
// Use this for initialization
void Start () {
transform.DOShakePosition(1, new Vector3(3, 3, 0));//这里可以控制摄像机的震动,前面时控制时间,后面是控制震动幅度
}
11.当然该插件还是有可视化代码操控的,添加这个组件可以自动操纵一些动画
12.DoTween还可以编辑物体的运动轨迹,通过按住shift和ctrl可以控制物体移动