实现
[SerializeField]
[Header("初始大小")]
private Vector3 scaleOrigin = new Vector3(1, 1, 1);
[SerializeField]
[Header("变化率")]
private float[] rate = { 1.12f, 1, 1.09f, 1, 1.06f, 1, 1.03f, 1 };
[SerializeField]
[Header("当前变化后大小")]
private Vector3 scaleCurrent = new Vector3(1, 1, 1);
[SerializeField]
[Header("计时器")]
private float timer = 0;
[SerializeField]
[Header("每次变化时长")]
private float[] duration = { 0.095f, 0.095f, 0.065f, 0.065f, 0.035f, 0.035f, 0.05f, 0.05f };
[SerializeField]
[Header("开启效果")]
private bool effect = false;
[SerializeField]
[Header("当前变化")]
private int index = 0;
private void OnEnable()
{
scaleOrigin = transform.localScale;
scaleCurrent = scaleOrigin * rate[index];
effect = false;
}
// Update is called once per frame
private void Update()
{
if (effect)
{
timer += Time.deltaTime;
if (index >= rate.Length || index >= duration.Length)
{
scaleCurrent = scaleOrigin;
index = 0;
timer = 0;
effect = false;
return;
}
if (timer < duration[index])
{
transform.localScale = Vector3.Lerp(transform.localScale, scaleCurrent, timer / duration[index]);
}
if (timer > duration[index])
{
transform.localScale = scaleCurrent;
timer = 0;
index++;
if (index < rate.Length && index < duration.Length)
{
scaleCurrent = scaleOrigin * rate[index];
}
}
}
}