5 using System.Collections.Generic;
24 public enum LerpTypes { Linear, EaseIn, EaseOut, EaseInOut, Free }
26 [Tooltip(
"The object to scale")]
29 [Tooltip(
"The scale value to animate to")]
32 [Tooltip(
"The ease type")]
35 [Tooltip(
"The duration of the scale animation in seconds")]
36 public float LerpTime = 1f;
38 [Tooltip(
"Auto start? or status")]
39 public bool IsRunning =
false;
41 [Tooltip(
"Animation complete!")]
45 private float mLerpTimeCounter;
48 private Vector3 mStartValue;
56 if (TargetObject == null)
58 TargetObject = this.gameObject;
60 mStartValue = GetScale();
68 if (TargetObject == null)
70 TargetObject = this.gameObject;
73 mStartValue = GetScale();
83 this.transform.localScale = mStartValue;
93 TargetValue = mStartValue;
94 mStartValue = TargetValue;
111 private Vector3 GetScale()
113 return TargetObject.transform.localScale;
122 private Vector3 GetNewScale(Vector3 currentScale,
float percent)
124 Vector3 newScale = Vector3.one;
128 newScale = Vector3.Lerp(mStartValue, TargetValue, percent);
131 newScale = Vector3.Lerp(mStartValue, TargetValue, QuadEaseIn(0, 1, percent));
134 newScale = Vector3.Lerp(mStartValue, TargetValue, QuadEaseOut(0, 1, percent));
137 newScale = Vector3.Lerp(mStartValue, TargetValue, QuadEaseInOut(0, 1, percent));
140 newScale = Vector3.Lerp(currentScale, TargetValue, percent);
152 return e * (v /= 1) * v + s;
157 return -e * (v /= 1) * (v - 2) + s;
163 return e / 2 * v * v + s;
165 return -e / 2 * ((--v) * (v - 2) - 1) + s;
171 private void Update()
173 if (IsRunning && LerpType !=
LerpTypes.Free)
176 mLerpTimeCounter += Time.deltaTime;
177 float percent = mLerpTimeCounter / LerpTime;
180 this.transform.localScale = GetNewScale(this.transform.localScale, percent);
191 bool wasRunning = IsRunning;
194 this.transform.localScale = GetNewScale(this.transform.localScale, LerpTime * Time.deltaTime);
195 IsRunning = this.transform.localScale != TargetValue;
198 if (IsRunning != wasRunning && !IsRunning)