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("杀死的时分调用我");
}
。
就这么多,太多了