示例#1
0
    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();
    }
示例#2
0
    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;
    }
示例#3
0
    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;
    }