Transform组件的Dotween

在两个旋转之间来回切换

		//类似汽车的雨刮器
        gameObject.transform.DOLocalRotate(new Vector3(0, 0, 90), 2).SetLoops(-1,LoopType.Yoyo);
		//用两秒钟突变的旋转到90度,以最短间隔
        gameObject.transform.DORotate(new Vector3(90f, 0f, 0f), 2,RotateMode.Fast);

 1. RotateMode.Fast 最快的方式
 2. FastBeyond360 旋转超过360度
 3. WorldAxisAdd 没搞理解
 4. LocalAxisAdd  将给定的旋转增加到转换的局部轴(就像在Unity的编辑器中启用“局部”开关或运用transform. rotate (Space.Self)旋转一个目标)。在这种形式下,最终值总是被认为是相对的 (没搞理解)
		//看向某个目标,只会旋转一次
        gameObject.transform.DOLookAt(cu.transform.position, 2);

在两个点之间坐标进行切换

		//在当时方位与Vector3(4f,4f,4f)之间来回切换,往返的
        gameObject.transform.DOMove(new Vector3(4f, 4f, 4f),2).SetLoops(-1,LoopType.Yoyo);
	//在当时方位与Vector3(4f,4f,4f)之间来回切换,耗时2s,每次都从开始点进行
        gameObject.transform.DOMove(new Vector3(4f, 4f, 4f), 2).SetLoops(-1,LoopType.Restart);
		//gameobject在两个点   new Vector3(5, 5f, 5f)  之间进行跳动
        gameObject.transform.DOLocalJump(new Vector3(5, 5f, 5f), 2f, 1, 1).SetLoops(-1,LoopType.Yoyo);
       //DOLocalJump(Vector3 endValue, float jumpPower, int numJumps, float duration, bool snapping)
       //endValue 完毕点
       //jumpPower 跳动的力气,Y轴的高度
       //duration 跳动的总数,分几次跳动到目标方位
       //snapping 是否滑润,True不滑润,Flase滑润

来回膨胀和变小

就像是心脏的跳动一样
        gameObject.transform.DOScale(new Vector3(3f,3f,3f),2).SetLoops(-1,LoopType.Yoyo);
//旋转到指定的巨细
        gameObject.transform.DOScale(new Vector3(3f, 3f, 3f), 2);

Material.Color

    private Color _OrgionColor = Color.black;
    private Color _TargetColor = Color.green;
    private void Start()
    {
       //可用于提示闪烁作用
        gameObject.GetComponent<MeshRenderer>().material.color = _OrgionColor;
        gameObject.GetComponent<MeshRenderer>().material.DOColor(_TargetColor, 2).SetLoops(-1, LoopType.Yoyo).SetId("DotweenAni");
        //获取材质,设置目标色彩,设置切换次数,切换形式,设置ID。
            DOTween.Kill("DotweenAni");//在想要停止的当地调用,能够停止动画
    }

能够多个动画一起播放

//很复杂我描绘不出来
        gameObject.transform.DOScale(new Vector3(4f, 4f, 4f), 2).SetLoops(-1,LoopType.Yoyo);
        gameObject.GetComponent<MeshRenderer>().material.DOColor(Color.black, 2).SetLoops(-1, LoopType.Yoyo);
        gameObject.transform.DOMove(new Vector3(4f, 4f, 4f), 2).SetLoops(-1, LoopType.Yoyo);
        gameObject.transform.DORotate(new Vector3(180f,180f,180f),2).SetLoops(-1,LoopType.Yoyo);

运用回调

OnComplete_播放完毕时调用

yoyo的次数为-1则不会被调用 在运动三次后调用OnComplete

  private void Start()
    {
        gameObject.transform.DOMove(new Vector3(4f, 4f, 4f), 2).SetLoops(3, LoopType.Yoyo).OnComplete(MyCallBack);
    }
    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.A))
        {
            DOTween.Kill("ha");
        }
    }
    private void MyCallBack()
    {
        Debug.Log("哈哈哈");
    }

OnKill_被杀死的时分调用

  private void Start()
    {
        gameObject.transform.DOMove(new Vector3(4f, 4f, 4f), 2).SetLoops(-1, LoopType.Yoyo).OnComplete(MyCallBack).SetId("ha");
    }
    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.A))
        {
            DOTween.Kill("ha");//按下A会调用回调
        }
    }
    private void MyCallBack()
    {
        Debug.Log("哈哈哈");
    }

OnPlay_在开始播放的时分调用

在按下暂停然后再播放的时分会调用,第一次自动播放会调用

  private void Start()
    {
        gameObject.transform.DOMove(new Vector3(4f, 4f, 4f), 2).SetLoops(-1, LoopType.Yoyo).OnPlay(MyCallBack).SetId("ha");
    }
    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.A))
        {
            DOTween.Pause("ha");
        }
        if (Input.GetKeyDown(KeyCode.D))
        {
            DOTween.Play("ha");
        }
    }
    private void MyCallBack()
    {
        Debug.Log("哈哈哈");
    }

OnPause_在暂停的时分调用

播放的时分按下一次调用一次

 private void Start()
    {
        gameObject.transform.DOMove(new Vector3(4f, 4f, 4f), 2).SetLoops(-1, LoopType.Yoyo).OnPause(MyCallBackPause).SetId("ha");
    }
    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.A))
        {
            DOTween.Pause("ha");
        }
        if (Input.GetKeyDown(KeyCode.D))
        {
            DOTween.Play("ha");
        }
    }
    private void MyCallBack()
    {
        Debug.Log("哈哈哈");
    }
    private void MyCallBackPause()
    {
        Debug.Log("暂停的时分调用我");
    }

OnStepComplete_往返的时分调用

加入循环三次 0-1调用一次
1-2调用一次 2-3调用一次 Loop.Yoyo每次都会调用,0-0不调用

   private void Start()
    {
        gameObject.transform.DOMove(new Vector3(4f, 4f, 4f), 2).SetLoops(-1, LoopType.Yoyo).OnStepComplete(MyCallBackStepComplete).SetId("ha");
    }
    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.A))
        {
            DOTween.Pause("ha");
        }
        if (Input.GetKeyDown(KeyCode.D))
        {
            DOTween.Play("ha");
        }
    }
    private void MyCallBackStepComplete()
    {
        Debug.Log("哈哈哈");
    }

OnUpdate_在播放的时分就调用

如果暂停或许杀死就不会调用了。

 private void Start()
    {
        gameObject.transform.DOMove(new Vector3(4f, 4f, 4f), 2).SetLoops(-1, LoopType.Yoyo).OnUpdate(MyCallBackUpdate).SetId("ha");
    }
    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.A))
        {
            DOTween.Pause("ha");
        }
        if (Input.GetKeyDown(KeyCode.D))
        {
            DOTween.Play("ha");
        }
    }
    private void MyCallBackUpdate()
    {
        Debug.Log("哈哈哈");
    }

多个回调一起启用

private void Start()
{
    gameObject.transform.DOMove(new Vector3(4f, 4f, 4f), 2)
        .SetLoops(-1, LoopType.Yoyo)
        .OnStart(MyCallBackStart)
        .OnUpdate(MyCallBackUpdate)
        .OnPlay(MyCallBackPlay)
        .OnKill(MyCallBackKill)
        .SetId("ha");
}
private void Update()
{
    if (Input.GetKeyDown(KeyCode.A))
    {
        DOTween.Pause("ha");
    }
    if (Input.GetKeyDown(KeyCode.D))
    {
        DOTween.Play("ha");
    }
}
private void MyCallBackPlay()
{
    Debug.Log("OnPlay");
}
private void MyCallBackStart()
{
    Debug.Log("开始");
}
private void MyCallBackUpdate()
{
    Debug.Log("哈哈哈");
}
private void MyCallBackKill()
{
    Debug.Log("杀死的时分调用我");
}

就这么多,太多了

DoTween简单的API,以及一些回调