コード例 #1
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;
    }
コード例 #2
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;
    }
コード例 #3
0
    public static IEnumerator ScaleObject(Transform targetObject, Vector3 scale, float time, EasingForm form, EasingType ease)
    {
        var t = 0f;
        var s = targetObject.localScale;

        while (t < 1f)
        {
            if (form == EasingForm.InOut)
            {
                targetObject.localScale = Vector3.Lerp(s, scale, EaseInOut(t, ease));
            }
            else if (form == EasingForm.Out)
            {
                targetObject.localScale = Vector3.Lerp(s, scale, EaseOut(t, ease));
            }
            else
            {
                targetObject.localScale = Vector3.Lerp(s, scale, EaseIn(t, ease));
            }

            t += Time.deltaTime / time;
            yield return(null);
        }

        targetObject.localScale = scale;
    }
コード例 #4
0
    public static IEnumerator RotateObject(Transform objectToMove, Quaternion q, float time, EasingForm form, EasingType ease)
    {
        var t = 0f;
        //float angleDone = 0f;
        Quaternion qOrg = objectToMove.rotation;

        while (t < 1f)
        {
            //float tAngle = 0.0f;
            //float tEaseLast = 0.0f;
            float tEaseNew = 0.0f;

            if (form == EasingForm.InOut)
            {
                tEaseNew = EaseInOut(t, ease);
                //float tEase = tEaseNew - tEaseLast;
                //tEaseLast = tEaseNew;
                //tAngle = angle * tEase;
            }
            else if (form == EasingForm.Out)
            {
                tEaseNew = EaseOut(t, ease);
                //float tEase = tEaseNew - tEaseLast;
                //tEaseLast = tEaseNew;
                //tAngle = angle * tEase;
            }
            else
            {
                tEaseNew = EaseIn(t, ease);
                //float tEase = tEaseNew - tEaseLast;
                //tEaseLast = tEaseNew;
                //tAngle = angle * tEase;
            }

            //objectToMove.Rotate(axis, tAngle);

            objectToMove.rotation = Quaternion.Slerp(qOrg, q, tEaseNew);

            //angleDone += tAngle;

            t += Time.deltaTime / time;
            yield return(null);

            //MPDebug.Log("Rotated: "+tEaseNew);
        }

        //MPDebug.Log("Rotated: "+angleDone);

        objectToMove.rotation = q;
        //objectToMove.Rotate(axis, angle - angleDone);
    }
コード例 #5
0
    /// <summary>
    /// Moves an object over a period of time
    /// </summary>
    /// <returns>
    /// A coroutine that moves the object
    /// </returns>
    /// <param name='objectToMove'>
    /// The Transform of the object to move.
    /// </param>
    /// <param name='position'>
    /// The destination position
    /// </param>
    /// <param name='time'>
    /// The number of seconds that the move should take
    /// </param>
    /// <param name='ease'>
    /// The easing function to use when moving the object
    /// </param>
    public static IEnumerator MoveObject(Transform objectToMove, Vector3 position, float time, EasingForm form, EasingType ease)
    {
        var t   = 0f;
        var pos = objectToMove.localPosition;

        while (t < 1f)
        {
            if (form == EasingForm.InOut)
            {
                objectToMove.localPosition = Vector3.Lerp(pos, position, EaseInOut(t, ease));
            }
            else if (form == EasingForm.Out)
            {
                objectToMove.localPosition = Vector3.Lerp(pos, position, EaseOut(t, ease));
            }
            else
            {
                objectToMove.localPosition = Vector3.Lerp(pos, position, EaseIn(t, ease));
            }

            t += Time.deltaTime / time;
            yield return(null);
        }
        objectToMove.localPosition = position;
    }