控制Dotween动画速度的方法

在这之前要了解一下Dotween里的一个方法SetSpeedBased()
例如:
transform.DOMove(Vector3.one, 1).SetSpeedBased();
使用SetSpeedBased时,移动方式就变成以速度为基准
原本表示持续时间的第二个参数,就变成表示速度的参数,每秒移动的单位数

所以控制速度的关键就是要调用这个设置方法,以下是我写的一个例子

    float speed = 10;
    private void Update()
    {
        if(Input.GetKeyUp(KeyCode.Q))
        {
            t.DOLocalMoveX(200, speed).SetSpeedBased();
        }
        if (Input.GetKeyUp(KeyCode.W))
        {
            speed *= 2;
            t.DOKill();
            t.DOLocalMoveX(200, speed).SetSpeedBased();
        }
    }

不过每次重新设置速度都要把之前的那个Dotween动画杀死,不然他之前的动画还会用之前的速度继续运动直到到达目的地;

但是这个方法也有个问题,就是可能会不清楚这个动画的具体时间是多少,所以我们举一反三一下,其实我这里所谓的设置动画速度的原理就是三步:

1)重新设置速度;

2)杀死之前的动画;

3)重新执行一次刚才的Dotween方法,把新的速度参数传进去。

所以我们用之前的时间参数也是可以的

    float time = 10;
    private void Update()
    {
        if(Input.GetKeyUp(KeyCode.Q))
        {
            t.DOLocalMoveX(200, time);
        }
        if (Input.GetKeyUp(KeyCode.W))
        {
            time /= 2;
            t.DOKill();
            t.DOLocalMoveX(200, time);
        }
    }

 

关于SetSpeedBased()方法的介绍,还要感谢以下链接的作者写的一篇详细的Dotween介绍文章,感兴趣的可以去看看

https://www.cnblogs.com/Damon-3707/p/11367585.html

你可能感兴趣的:(Unity3D,C#)