Unity开发——DoTween 方法和队列动画

项目中经常用到物体移动,旋转,控制等已经自己来代码实现,代码制作动画也可以使用Dotween来实现。

Dotween提供了很多方法可以使用:

using UnityEngine;  
using System.Collections;  
using DG.Tweening;  
using UnityEngine.UI;  
  
  
public class TestDoTween : MonoBehaviour {  
  
    int number = 0;  
    // Use this for initialization  
    void Start ()  
    {  
        //FunctionOne();  
        //FunctionTwo();  
        //FunctionSequence();  
        FunctionSet();  
    }  
  
    // 创建 DOTween 实例 方法  
    #region 方法一 类方法  
    private void FunctionOne()  
    {  
        // 创建一个 Tweener 是自身坐标 一秒内 移动到  坐标 Vector3(5, 5, 5) 位置  
        Tween tween = DOTween.To(() => transform.position, r => transform.position = r, new Vector3(5, 5, 5), 1);  
  
        // 创建一个 Tweener 对象, 另 number的值在 5 秒内变化到 100  
        Tween t = DOTween.To(() => number, x => number = x, 100, 5);  
        // 给执行 t 变化时,每帧回调一次 UpdateTween 方法  
        t.OnUpdate( () => UpdateTween(number));    
    }  
  
    private void UpdateTween(int num)  
    {  
        Debug.Log(num);      // 变化过程中, 每帧回调该方法  
    }  
 
    #endregion  
 
    #region 方法二  直接调用  
  
    private void FunctionTwo()  
    {  
        //十秒内X,Y,Z 局部坐标(localPosition)移动到  10,10,10 位置  
        //transform.DOBlendableLocalMoveBy(new Vector3(10, 10, 10), 10);  
  
        //十秒内 X,Y,Z 方向的局部旋转(localPosition),转动到 30,30,30  
        //transform.DOBlendableLocalRotateBy(new Vector3(30, 30, 30), 10);  
  
        //十秒内X,Y,Z坐标移动到 自身坐标 加 new Vector3( 10,10,10) 位置 原始 坐标 3,3,3,移动后 13,13,13  
        //transform.DOBlendableMoveBy(new Vector3(10, 10, 10), 10);  
  
        //十秒内X,Y,Z自身旋转到 30,30,30(有父物体的相对于父物体)  
        //transform.DOBlendableRotateBy(new Vector3(30, 30, 30), 10);  
  
        //十秒内 自身X,Y,Z方向的比例 加 3,3,3如原始比例 2,1,1 变化后5,4,4  
        //transform.DOBlendableScaleBy(new Vector3(10, 10, 10), 10);  
  
        //执行该方法,变化立即结束,且完成移动  
        //transform.DOComplete();  
  
        //在变化过程中执行该方法,则物体慢慢的变回原样,如果变化已经完成,该方法无效  
        //transform.DOFlip();  
  
        // 变化过程中执行该方法,则物体变化到 第二秒 时该物体的位置、比例等  
        //transform.DOGoto(2);  
  
        //十秒内 弹跳 3次  
        //transform.DOJump(new Vector3(10, 10, 10), 3, 10);  
  
        //停止掉当前的变化  
        //transform.DOKill();  
  
        // 十秒内 弹跳 3次, 局部坐标最终变化为  10, 0, 10  
        //transform.DOLocalJump(new Vector
  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Unity中轮流播放DoTween和Curvy动画,您可以使用协程和yield语句来实现。 以下是一个简单的示例代码: ```csharp using UnityEngine; using System.Collections; using DG.Tweening; using Curvy; public class AnimationController : MonoBehaviour { public CurvySpline spline; public GameObject objectToAnimate; private bool isTweening; private bool isCurvyAnimating; void Start() { isTweening = false; isCurvyAnimating = false; StartCoroutine(Animate()); } IEnumerator Animate() { while (true) { if (!isTweening && !isCurvyAnimating) { // 播放DoTween动画 isTweening = true; objectToAnimate.transform.DOMoveX(5f, 1f).OnComplete(() => { isTweening = false; }); } else if (!isTweening && isCurvyAnimating) { // 暂停Curvy动画 isCurvyAnimating = false; spline.gameObject.SetActive(false); yield return new WaitForSeconds(1f); } else if (isTweening && !isCurvyAnimating) { // 播放Curvy动画 isCurvyAnimating = true; spline.gameObject.SetActive(true); spline.Play(); yield return new WaitForSeconds(1f); } } } } ``` 在这个示例中,我们使用了一个while循环来不断地检查当前是否正在播放动画。如果没有正在播放任何动画,则播放DoTween动画。如果正在播放DoTween动画,则暂停DoTween动画并开始播放Curvy动画。如果正在播放Curvy动画,则暂停Curvy动画并重新开始DoTween动画。 要实现这种轮流播放的效果,我们使用了协程和yield语句来等待一段时间,然后再继续播放下一个动画。在这个示例中,我们等待1秒钟,然后再继续播放下一个动画。您可以根据需要调整等待时间。 最后,我们建议您使用DOTween和Curvy插件来创建和控制动画。这些插件可以帮助您更轻松地创建和管理复杂的动画效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值