Unity_DOTween动画的学习(十二)_Blendable tweens可混合动画的学习(英文文档篇)

来源:互联网 发布:淘宝网直通车怎么开 编辑:程序博客网 时间:2024/05/01 00:31

Unity_DOTween动画的学习(十二)_Blendable tweens可混合动画的学习(英文文档篇)<16/10/2017>

首先,下文的意思是DOTween的可混合动画(Blendable tweens)支持对同一对象的多个动画的同时混合效果播放


参照示例,我们填写唯一脚本,赋予Cube,Cube1只是个不动的参照物

唯一脚本代码:

using System.Collections;using System.Collections.Generic;using UnityEngine;using DG.Tweening;public class NewBehaviourScript : MonoBehaviour{    //public float myValueChange = 10f;    void Start()    {        //DOTween.To(() => myValueChange, x => myValueChange = x, 0, 4f).SetLoops(2, LoopType.Yoyo);//变化规律:10=>0=>10        transform.DOBlendableMoveBy(new Vector3(3, 3, 0), 3);//可混合动画,一个对象同时执行多个Tween动画,比如当前动画向(3,3,0)三秒内移动的插值和向(-3,0,0)一秒Yoyo变化的插值综合的插值来进行变化        transform.DOBlendableMoveBy(new Vector3(-3, 0, 0), 1f).SetLoops(3, LoopType.Yoyo);//变化规律:0=>-3=>0=>-3    }    void Update()    {        //print(myValueChange);        print((int)transform.position.x);//此处我把值取整输出了啊!!!    }}
先观察实现效果:


为什么会是这样的效果,下图是播放整体流程时的面板信息,我把两个混合动画的混合插值输出了(也就是Cube的X轴的全过程变化值,可在代码中看出)<最后变成的带e结尾的数很小,unity会自动把它当成0来计算>


现在你已经理解了可混合动画的精髓,让我们来欣赏下下面几个混合例子(真是牛逼!又一次把iTween甩了十几条街)

演示一:

<1>代码部分

using System.Collections;using System.Collections.Generic;using UnityEngine;using DG.Tweening;public class NewBehaviourScript : MonoBehaviour{    void Start()    {        transform.DOBlendableMoveBy(new Vector3(3, 3, 0), 3);        transform.DOBlendableMoveBy(new Vector3(-3, 0, 0), 1f).SetLoops(3, LoopType.Yoyo);        transform.DOBlendableLocalRotateBy(new Vector3(0, 180, 0), 0.5f).SetLoops(6, LoopType.Yoyo);    }}
<2>最终效果


演示二:
<1>代码部分

using System.Collections;using System.Collections.Generic;using UnityEngine;using DG.Tweening;public class NewBehaviourScript : MonoBehaviour{    void Start()    {        transform.DOBlendableMoveBy(new Vector3(3, 3, 0), 3);        transform.DOBlendableMoveBy(new Vector3(-3, 0, 0), 1f).SetLoops(3, LoopType.Yoyo);        transform.DOBlendableLocalRotateBy(new Vector3(0, 180, 0), 0.5f).SetLoops(6, LoopType.Yoyo);        transform.DOBlendableScaleBy(new Vector3(2, 2, 2), 1f).SetLoops(3, LoopType.Yoyo);    }}
<2>最终效果

哈哈,今天的玩法到此结束,更多API讲解请见下节!

阅读全文
1 0