public static float PennerEaseOut(double linearStep, PennerEasingType type) { linearStep = Mathf.Clamp01((float)linearStep); switch (type) { case PennerEasingType.Linear: return((float)linearStep); case PennerEasingType.Quadratic: return((float)Penner.PennerInterpolator.QuadEaseOut(0.0, 1.0, linearStep)); case PennerEasingType.Cubic: return((float)Penner.PennerInterpolator.CubicEaseOut(0.0, 1.0, linearStep)); case PennerEasingType.Quartic: return((float)Penner.PennerInterpolator.QuarticEaseOut(0.0, 1.0, linearStep)); case PennerEasingType.Quintic: return((float)Penner.PennerInterpolator.QuinticEaseOut(0.0, 1.0, linearStep)); case PennerEasingType.Sine: return((float)Penner.PennerInterpolator.SineEaseOut(0.0, 1.0, linearStep)); case PennerEasingType.Exponential: return((float)Penner.PennerInterpolator.ExpoEaseOut(0.0, 1.0, linearStep)); case PennerEasingType.Circular: return((float)Penner.PennerInterpolator.CircularEaseOut(0.0, 1.0, linearStep)); case PennerEasingType.Elastic: return((float)Penner.PennerInterpolator.ElasticEaseOut(0.0, 1.0, linearStep)); case PennerEasingType.Bounce: return((float)Penner.PennerInterpolator.BounceEaseOut(0.0, 1.0, linearStep)); case PennerEasingType.Back: return((float)Penner.PennerInterpolator.BackEaseOut(0.0, 1.0, linearStep)); } throw new NotImplementedException(); }
public static IEnumerator PennerScaleObject(Transform objectToScale, Vector3 scale, float time, PennerEasingType ease, EasingForm form) { var t = 0f; var newScale = objectToScale.localScale; while (t < 1f) { float easeT; if (form == EasingForm.In) { easeT = PennerEaseIn(t, ease); } else { easeT = PennerEaseOut(t, ease); } objectToScale.localScale = Vector3.Lerp(newScale, scale, easeT); t += Time.deltaTime / time; yield return(null); } objectToScale.localScale = scale; }
public static IEnumerator PennerMoveObject(Transform objectToMove, Vector3 position, float time, PennerEasingType ease, EasingForm form) { var t = 0f; var pos = objectToMove.localPosition; while (t < 1f) { float easeT; if (form == EasingForm.In) { easeT = PennerEaseIn(t, ease); } else { easeT = PennerEaseOut(t, ease); } objectToMove.localPosition = Vector3.Lerp(pos, position, easeT); t += Time.deltaTime / time; yield return(null); } objectToMove.localPosition = position; }