最近游戏中要实现果冻动画,网上看了一大推资料,好几个都是用shader做的(本人不懂shader),把他们的shader捞下来结果完全不是那么回事(感觉受到了欺骗).自己又尝试修改他们的shader(后来发现是赶鸭子上架,就放弃了);最后转过头一想,不就是动画么,直接用dotween做不就行了,也许没有shader做出的那么完美,不过能实现需求不就行了(安慰自己),废话不多说,直接上代码(包括一个持续动画和点击效果),就不放截图了
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using DG.Tweening;
public class JellyAnimition : MonoBehaviour
{
public Transform trans;
Button btn;
// Use this for initialization
void Start ()
{
btn = trans.GetComponent<Button> ();
OnAnimition (true);
}
public void OnAnimition(bool play)
{
if (play)
{
trans.DOShakeScale (6f, 0.15f, 2, 20).SetLoops (-1, LoopType.Yoyo);
}
else
{
trans.DOKill ();
trans.localScale = Vector3.one;
}
}
public void OnClick()
{
btn.interactable = false;
OnAnimition (false);
trans.DOShakeScale (1f, 0.3f, 8, 80).OnComplete(()=>{
btn.interactable = true;
OnAnimition(true);
});
}
void OnDisable()
{
OnAnimition (false);
}
void OnDestroy()
{
OnAnimition (false);
}
}