Example #1
0
    public float Ease(LerpType type, float duracion)
    {
        float lerpTime = duracion;
        currentLerpTime += Time.deltaTime;
        float t = currentLerpTime / lerpTime;

        switch(type)
        {
        case LerpType.Linear:
            return t;
        case LerpType.In:
            t = Mathf.Sin(t * Mathf.PI * 0.5f);
            break;
        case LerpType.Out:
            t = t*t;
            break;
        case LerpType.Smooth:
            t = t*t*t * (t * (6f*t - 15f) + 10f);
            break;
        }

        if (currentLerpTime > lerpTime) {
            currentLerpTime = lerpTime;
        }

        return t;
    }
 public void OffScreen(float updatedLerpTime, LerpType overrideType)
 {
     SetActive();
     originalLerpTime = lerpTime;
     lerpTime = updatedLerpTime;
     needToResetLerpTime = true;
     OffScreenOverride(overrideType);
 }
Example #3
0
 public AnimationPosition(AnimationPosition source) : base(source)
 {
     fromPos      = source.fromPos;
     toPos        = source.toPos;
     lerpType     = source.lerpType;
     posType      = source.posType;
     isFromTarget = source.isFromTarget;
 }
Example #4
0
 public AnimationPosition(RectTransform target, float length, AnimationCurve curve, Vector3 from_pos, Vector3 to_pos, LerpType lerp_type, PosType pos_type, bool is_from_target) : base(target, length, curve)
 {
     fromPos      = from_pos;
     toPos        = to_pos;
     lerpType     = lerp_type;
     posType      = pos_type;
     isFromTarget = is_from_target;
 }
Example #5
0
 public RotateLevelData(float activeTime, float angle, float time, LerpType lerpType, int level)
 {
     this.activeTime = activeTime;
     this.angle      = angle;
     this.time       = time;
     this.lerpType   = lerpType;
     this.level      = level;
 }
Example #6
0
 public EnlargeLevelData(float activeTime, float rate, float time, LerpType lerpType, int level)
 {
     this.activeTime = activeTime;
     this.rate       = rate;
     this.time       = time;
     this.lerpType   = lerpType;
     this.level      = level;
 }
    public void lerpAlpha(float duration)
    {
        _lerpType     = LerpType.Alpha;
        this.duration = duration;
        currentColor  = originalColor;

        setLerp();
    }
Example #8
0
        public static Vector2d Lerp(LerpType lerpType, Vector2d current, Vector2d target, double amount)
        {
            if (lerpType == LerpType.Lerp)
            {
                return(Vector2d.Lerp(current, target, amount));
            }

            return(Vector2d.SmoothStep(current, target, amount));
        }
Example #9
0
 public MoveLevelData(float activeTime, float x, float y, float time, LerpType lerpType, int level)
 {
     this.activeTime = activeTime;
     this.x          = x;
     this.y          = y;
     this.time       = time;
     this.lerpType   = lerpType;
     this.level      = level;
 }
Example #10
0
        public static Vector2f Lerp(LerpType lerpType, Vector2f current, Vector2f target, float amount)
        {
            if (lerpType == LerpType.Lerp)
            {
                return(Vector2f.Lerp(current, target, amount));
            }

            return(Vector2f.SmoothStep(current, target, amount));
        }
 public LerpHelper(float from, float to, float margin, float speed, LerpType lerpType)
 {
     this.From             = from;
     this.CurrentValue     = from;
     this.To               = to;
     this.Margin           = margin;
     this.Speed            = speed;
     this._currentLerpType = lerpType;
 }
Example #12
0
    public static float MatchedLerpType(LerpType lerpType, float t)
    {
        switch (lerpType)
        {
        case LerpType.Liner:
            return(Liner(t));

        case LerpType.EaseInQuad:
            return(EaseInQuad(t));

        case LerpType.EaseOutQuad:
            return(EaseOutQuad(t));

        case LerpType.EaseInOutQuad:
            return(EaseInOutQuad(t));

        case LerpType.EaseInCubic:
            return(EaseInCubic(t));

        case LerpType.EaseOutCubic:
            return(EaseOutCubic(t));

        case LerpType.EaseInOutCubic:
            return(EaseInOutCubic(t));

        case LerpType.EaseInQuart:
            return(EaseInQuart(t));

        case LerpType.EaseOutQuart:
            return(EaseOutQuart(t));

        case LerpType.EaseInOutQuart:
            return(EaseInOutQuart(t));

        case LerpType.EaseInQuint:
            return(EaseInQuint(t));

        case LerpType.EaseOutQuint:
            return(EaseOutQuint(t));

        case LerpType.EaseInOutQuint:
            return(EaseInOutQuint(t));

        case LerpType.EaseInElastic:
            return(EaseInElastic(t));

        case LerpType.EaseOutElastic:
            return(EaseOutElastic(t));

        case LerpType.EaseInOutElastic:
            return(EaseInOutElastic(t));

        default:
            return(t);
        }
    }
Example #13
0
    /// <summary>
    /// 카메라 확대
    /// </summary>
    private void AddEnlargeLevel(float activeTime, float rate, float time, LerpType lerpType, int level)
    {
        XmlElement Item = (XmlElement)root.AppendChild(doc.CreateElement("EnlargeLevel"));

        Item.SetAttribute("ActiveTime", activeTime.ToString());
        Item.SetAttribute("Rate", rate.ToString());
        Item.SetAttribute("Time", time.ToString());
        Item.SetAttribute("LerpType", lerpType.ToString());
        Item.SetAttribute("Level", level.ToString());
    }
Example #14
0
        static public IEnumerable <float> LerpE(float min, float max, float time, LerpType type)
        {
            float currentTime = 0;

            while (currentTime <= time)
            {
                currentTime += Time.deltaTime;
                yield return(Lerp(min, max, currentTime / time, type));
            }
        }
Example #15
0
 public ColorData(ColorDataList colorData, float activeTime, float r, float g, float b, float time, LerpType lerpType, int level)
 {
     this.colorData  = colorData;
     this.activeTime = activeTime;
     this.r          = r;
     this.g          = g;
     this.b          = b;
     this.time       = time;
     this.lerpType   = lerpType;
     this.level      = level;
 }
Example #16
0
    /// <summary>
    /// 카메라 이동
    /// </summary>
    private void AddMoveLevel(float activeTime, float x, float y, float time, LerpType lerpType, int level)
    {
        XmlElement Item = (XmlElement)root.AppendChild(doc.CreateElement("MoveLevel"));

        Item.SetAttribute("ActiveTime", activeTime.ToString());
        Item.SetAttribute("X", x.ToString());
        Item.SetAttribute("Y", y.ToString());
        Item.SetAttribute("Time", time.ToString());
        Item.SetAttribute("LerpType", lerpType.ToString());
        Item.SetAttribute("Level", level.ToString());
    }
 public static float Lerp(float t, LerpType lerp)
 {
     switch (lerp)
     {
         case LerpType.Accelerate:
             return AccelerateLerp(t);
         case LerpType.Smooth:
             return SmoothLerp(t);
         default:
             return t;
     }
 }
Example #18
0
        public static float Lerp(LerpType lerpType, float value1, float value2, float amount)
        {
            if (lerpType == LerpType.Lerp)
            {
                return(FlaiMath.Lerp(value1, value2, amount));
            }
            else if (lerpType == LerpType.Instant)
            {
                return(value2);
            }

            return(FlaiMath.SmoothStep(value1, value2, amount));
        }
Example #19
0
        //https://chicounity3d.wordpress.com/2014/05/23/how-to-lerp-like-a-pro/
        static public float LerpTime(float time, LerpType type)
        {
            switch (type)
            {
            case LerpType.EASE_OUT: return(Mathf.Sin(time * Mathf.PI * 0.5f));

            case LerpType.SMOOTH_STEP: return(time = time * time * (3f - 2f * time));

            case LerpType.SMOOTHER_STEP: return(time * time * time * (time * (6f * time - 15f) + 10f));

            default: return(time);
            }
        }
    public static float Lerp(float t, LerpType lerp)
    {
        switch (lerp)
        {
        case LerpType.Accelerate:
            return(AccelerateLerp(t));

        case LerpType.Smooth:
            return(SmoothLerp(t));

        default:
            return(t);
        }
    }
Example #21
0
    static float LerpFunc(LerpType typ, float t, float speed)
    {
        switch (typ)
        {
        case LerpType.None:
            return(0f);

        case LerpType.Linear:
            return(Mathf.PingPong((speed * t) + 0.5f, 1f) * 2f - 1f);

        case LerpType.Sinusoidal:
            return(Mathf.Sin(speed * t));
        }

        throw new System.Exception("BobFunc, No type found: " + typ.ToString());
    }
Example #22
0
 /// <summary>
 /// 게임 플레이 화면을 이동시킨다.
 /// </summary>
 /// <param name="x">이동시킬 x좌표</param>
 /// <param name="y">이동시킬 y좌표</param>
 /// <param name="time">이동시킬 시간</param>
 public void MoveLevel(float x, float y, float time, LerpType lerpType, int level = 1)
 {
     // 생존 중일때만 작동한다.
     if (playing)
     {
         // 변화 중이라면
         if (moveEnable)
         {
             // 변화를 중지하고 코루틴을 멈춘다
             moveEnable = false;
             StopCoroutine(moveCoroutine);
         }
         moveCoroutine = MoveCoroutine(x, y, time, lerpType, level);
         StartCoroutine(moveCoroutine);
     }
 }
Example #23
0
 /// <summary>
 /// 게임 플레이 화면을 일정 비율 확대시킨다.
 /// 숫자가 작을수록 화면이 커진다.
 /// </summary>
 /// <param name="rate">확대시킬 비율</param>
 /// <param name="time">확대시킬 시간</param>
 public void EnlargeLevel(float rate, float time, LerpType lerpType, int level = 1)
 {
     // 생존 중일때만 작동한다.
     if (playing)
     {
         // 변화 중이라면
         if (enlargeEnable)
         {
             // 변화를 중지하고 코루틴을 멈춘다
             enlargeEnable = false;
             StopCoroutine(enlargeCoroutine);
         }
         enlargeCoroutine = EnlargeCoroutine(rate, time, lerpType, level);
         StartCoroutine(enlargeCoroutine);
     }
 }
Example #24
0
 /// <summary>
 /// Enemy의 색을 지정된 시간동안 서서히 바꾼다.
 /// </summary>
 /// <param name="color">바꿀 색상</param>
 /// <param name="time">바꿀 시간</param>
 public void ChangeEnemyColor(Color color, float time, LerpType lerpType, int level = 1)
 {
     // 생존 중일때만 작동한다.
     if (playing)
     {
         // 변화 중이라면
         if (eChangeEnable)
         {
             // 변화를 중지하고 코루틴을 멈춘다
             eChangeEnable = false;
             StopCoroutine(eChangeCoroutine);
         }
         eChangeCoroutine = EnemyChangeCoroutine(color, time, lerpType, level);
         StartCoroutine(eChangeCoroutine);
     }
 }
Example #25
0
 /// <summary>
 /// 게임 플레이 화면을 일정 각도 회전시킨다.
 /// </summary>
 /// <param name="angle">회전시킬 각도</param>
 /// <param name="time">회전시킬 시간</param>
 public void RotateLevel(float angle, float time, LerpType lerpType, int level = 1)
 {
     // 생존 중일때만 작동한다.
     if (playing)
     {
         // 변화 중이라면
         if (rotateEnable)
         {
             // 변화를 중지하고 코루틴을 멈춘다
             rotateEnable = false;
             StopCoroutine(rotateCoroutine);
         }
         rotateCoroutine = RotateCoroutine(angle, time, lerpType, level);
         StartCoroutine(rotateCoroutine);
     }
 }
Example #26
0
    private IEnumerator MovingLeftAndRight(float amount, float speed, LerpType lerpType)
    {
        float   t        = 0;
        float   time     = amount / speed;
        Vector3 startPos = transform.position;
        Vector3 endPos;

        if (Random.value <= 0.5f)
        {
            endPos = startPos + Vector3.left * amount;
        }
        else
        {
            endPos = startPos + Vector3.right * amount;
        }
        while (t < time)
        {
            t += Time.deltaTime;
            float factor = EasyType.MatchedLerpType(lerpType, t / time);
            transform.position = Vector3.Lerp(startPos, endPos, factor);
            yield return(null);
        }


        while (true)
        {
            t        = 0;
            startPos = transform.position;
            if (startPos.x > 0) //On right
            {
                endPos = new Vector3(-amount, startPos.y, startPos.z);
            }
            else //On left
            {
                endPos = new Vector3(amount, startPos.y, startPos.z);
            }

            while (t < time)
            {
                t += Time.deltaTime;
                float factor = EasyType.MatchedLerpType(lerpType, t / time);
                transform.position = Vector3.Lerp(startPos, endPos, factor);
                yield return(null);
            }
        }
    }
Example #27
0
    // 카메라 회전 코루틴
    private IEnumerator RotateCoroutine(float rotateAngle, float time, LerpType lerpType, int level)
    {
        rotateEnable = true;
        float originalAngle = mainCamera.transform.localRotation.z;
        float tempTime      = 0;

        while (true)
        {
            if (playing)
            {
                // 변화 시간이 다 지나지 않았을 경우
                if (tempTime < time)
                {
                    // 카메라의 각도를 본래 각도에서 바꿀 각도로 지정된 시간동안 변화시킴
                    mainCamera.transform.localRotation = Quaternion.Lerp(
                        new Quaternion(mainCamera.transform.localRotation.x, mainCamera.transform.localRotation.y, originalAngle, mainCamera.transform.localRotation.w),
                        new Quaternion(mainCamera.transform.localRotation.x, mainCamera.transform.localRotation.y, rotateAngle, mainCamera.transform.localRotation.w),
                        GetLerpTime(lerpType, level, tempTime, time));
                    // 시간 카운트
                    tempTime += Time.deltaTime;
                }
                // 변화 시간이 다 지났을 경우
                else
                {
                    // 카메라 각도를 지정된 각도로 변경
                    mainCamera.transform.localRotation = new Quaternion(
                        mainCamera.transform.localRotation.x,
                        mainCamera.transform.localRotation.y,
                        rotateAngle,
                        mainCamera.transform.localRotation.w);
                    // 변화 활성화를 해제
                    rotateEnable = false;
                    // 코루틴 중지
                    StopCoroutine(rotateCoroutine);
                }
            }
            else
            {
                // 변화 활성화를 해제
                rotateEnable = false;
                // 코루틴 중지
                StopCoroutine(rotateCoroutine);
            }
            yield return(null);
        }
    }
Example #28
0
            public static Vector3 lerp(Vector3 from, Vector3 to, float time, LerpType mode)
            {
                switch (mode)
                {
                case LerpType.lerpLinear:
                {
                    return(lerp(from, to, time));
                }

                case LerpType.lerpEaseInSine:
                {
                    return(lerpEaseInSine(from, to, time));
                }

                case LerpType.lerpEaseOutSine:
                {
                    return(lerpEaseOutSine(from, to, time));
                }

                case LerpType.lerpEaseInOutSine:
                {
                    return(lerpEaseInOutSine(from, to, time));
                }

                case LerpType.lerpEaseInQuad:
                {
                    return(lerpEaseInQuad(from, to, time));
                }

                case LerpType.lerpEaseOutQuad:
                {
                    return(lerpEaseOutQuad(from, to, time));
                }

                case LerpType.lerpEaseInOutQuad:
                {
                    return(lerpEaseInOutQuad(from, to, time));
                }

                default:
                {
                    throw new System.ArgumentException("Unknown case.");
                }
                }
            }
Example #29
0
    // 이동 코루틴
    private IEnumerator MoveCoroutine(float x, float y, float time, LerpType lerpType, int level)
    {
        moveEnable = true;
        Vector3 originalVector = mainCamera.transform.position;
        float   tempTime       = 0;

        Vector3 moveVector = new Vector3(-x, -y, -10);

        while (true)
        {
            if (playing)
            {
                // 변화 시간이 다 지나지 않았을 경우
                if (tempTime < time)
                {
                    // 카메라의 위치를 본래 위치에서 바꿀 위치로 지정된 사간동안 변화시킴
                    mainCamera.transform.position = Vector3.Lerp(
                        originalVector,
                        moveVector,
                        GetLerpTime(lerpType, level, tempTime, time));
                    // 시간 카운트
                    tempTime += Time.deltaTime;
                }
                // 변화 시간이 다 지났을 경우
                else
                {
                    // 카메라 위치를 지정된 위치로 변경
                    mainCamera.transform.position = moveVector;
                    // 변화 활성화를 해제
                    moveEnable = false;
                    // 코루틴 중지
                    StopCoroutine(moveCoroutine);
                }
            }
            else
            {
                // 변화 활성화를 해제
                moveEnable = false;
                // 코루틴 중지
                StopCoroutine(moveCoroutine);
            }
            yield return(null);
        }
    }
Example #30
0
    public float ApplyCurveToLerpTime(float t, LerpType type)
    {
        switch (type)
        {
        case LerpType.EaseOut:
            return(Mathf.Sin(t * Mathf.PI * 0.5f));

        case LerpType.EaseIn:
            return(1f - Mathf.Cos(t * Mathf.PI * 0.5f));

        case LerpType.Exponential:
            return(t * t);

        case LerpType.SmoothStep:
            return(t * t * (3f - 2f * t));
        }

        return(t);
    }
Example #31
0
 public static int Lerp(int startPoint, int endPoint, float lerpPosition, LerpType lerpType)
 {
     switch (lerpType)
     {
         default:
         case LerpType.Normal:
             return NormalLerp(startPoint, endPoint, lerpPosition);
         case LerpType.FadeOut:
             return FadeOut(startPoint, endPoint, lerpPosition);
         case LerpType.FadeIn:
             return FadeIn(startPoint, endPoint, lerpPosition);
         case LerpType.Exponential:
             return Exponential(startPoint, endPoint, lerpPosition);
         case LerpType.Smooth:
             return SmoothLerp(startPoint, endPoint, lerpPosition);
         case LerpType.Smoother:
             return SmootherLerp(startPoint, endPoint, lerpPosition);
     }
 }
Example #32
0
    // 장애물 색 변화 코루틴
    private IEnumerator EnemyChangeCoroutine(Color changeColor, float time, LerpType lerpType, int level)
    {
        eChangeEnable = true;
        Color originalColor = LevelData.Instance.enemyColor;
        float tempTime      = 0;

        while (true)
        {
            if (playing)
            {
                // 변화 시간이 다 지나지 않았을 경우
                if (tempTime < time)
                {
                    // 배경색을 본래 색에서 바꿀 색으로 지정된 시간동안 변화시킴
                    LevelData.Instance.enemyColor = Color.Lerp(
                        originalColor,
                        changeColor,
                        GetLerpTime(lerpType, level, tempTime, time));
                    // 시간 카운트
                    tempTime += Time.deltaTime;
                }
                // 변화 시간이 다 지났을 경우
                else
                {
                    // 배경색을 지정된 색으로 변경
                    LevelData.Instance.enemyColor = changeColor;
                    // 변화 활성화를 해제
                    eChangeEnable = false;
                    // 코루틴 중지
                    StopCoroutine(eChangeCoroutine);
                }
            }
            else
            {
                // 변화 활성화를 해제
                eChangeEnable = false;
                // 코루틴 중지
                StopCoroutine(eChangeCoroutine);
            }
            yield return(null);
        }
    }
Example #33
0
    // 확대 코루틴
    private IEnumerator EnlargeCoroutine(float enlargeRate, float time, LerpType lerpType, int level)
    {
        enlargeEnable = true;
        float originalSize = cameraComp.orthographicSize;
        float tempTime     = 0;

        while (true)
        {
            if (playing)
            {
                // 변화 시간이 다 지나지 않았을 경우
                if (tempTime < time)
                {
                    // 카메라의 시야 크기를 본래 크기에서 바꿀 크기로 지정된 사간동안 변화시킴
                    cameraComp.orthographicSize = Mathf.Lerp(
                        originalSize,
                        enlargeRate * cameraSize,
                        GetLerpTime(lerpType, level, tempTime, time));
                    // 시간 카운트
                    tempTime += Time.deltaTime;
                }
                // 변화 시간이 다 지났을 경우
                else
                {
                    // 카메라 시야 크기를 지정된 크기로 변경
                    cameraComp.orthographicSize = enlargeRate * cameraSize;
                    // 변화 활성화를 해제
                    enlargeEnable = false;
                    // 코루틴 중지
                    StopCoroutine(enlargeCoroutine);
                }
            }
            else
            {
                // 변화 활성화를 해제
                enlargeEnable = false;
                // 코루틴 중지
                StopCoroutine(enlargeCoroutine);
            }
            yield return(null);
        }
    }
 public static float Lerp(float start, float end, float value, LerpType lerpType)
 {
     switch (lerpType)
     {
     case LerpType.Linear: return Lerp(start,end,value);
     case LerpType.Hermite: return Hermite(start,end,value);
     case LerpType.Sinerp: return Sinerp(start,end,value);
     case LerpType.Coserp: return Coserp(start,end,value);
     case LerpType.Clerp: return Clerp(start,end,value);
     case LerpType.Berp: return Berp(start,end,value);
     case LerpType.EaseInQuad: return EaseInQuad(start,end,value);
     case LerpType.EaseOutQuad: return EaseOutQuad(start,end,value);
     case LerpType.EaseInOutQuad: return EaseInOutQuad(start,end,value);
     case LerpType.EaseInCubic: return EaseInCubic(start,end,value);
     case LerpType.EaseOutCubic: return EaseOutCubic(start,end,value);
     case LerpType.EaseInOutCubic: return EaseInOutCubic(start,end,value);
     case LerpType.EaseInQuart: return EaseInQuart(start,end,value);
     case LerpType.EaseOutQuart: return EaseOutQuart(start,end,value);
     case LerpType.EaseInOutQuart: return EaseInOutQuart(start,end,value);
     case LerpType.EaseInQuint: return EaseInQuint(start,end,value);
     case LerpType.EaseOutQuint: return EaseOutQuint(start,end,value);
     case LerpType.EaseInOutQuint: return EaseInOutQuint(start,end,value);
     case LerpType.EaseInSine: return EaseInSine(start,end,value);
     case LerpType.EaseOutSine: return EaseOutSine(start,end,value);
     case LerpType.EaseInOutSine: return EaseInOutSine(start,end,value);
     case LerpType.EaseInExpo: return EaseInExpo(start,end,value);
     case LerpType.EaseOutExpo: return EaseOutExpo(start,end,value);
     case LerpType.EaseInOutExpo: return EaseInOutExpo(start,end,value);
     case LerpType.EaseInCirc: return EaseInCirc(start,end,value);
     case LerpType.EaseOutCirc: return EaseOutCirc(start,end,value);
     case LerpType.EaseInOutCirc: return EaseInOutCirc(start,end,value);
     case LerpType.Spring: return Spring(start,end,value);
     case LerpType.EaseInBounce: return EaseInBounce(start,end,value);
     case LerpType.EaseOutBounce: return EaseOutBounce(start,end,value);
     case LerpType.EaseInOutBounce: return EaseInOutBounce(start,end,value);
     case LerpType.EaseInBack: return EaseInBack(start,end,value);
     case LerpType.EaseOutBack: return EaseOutBack(start,end,value);
     case LerpType.EaseInOutBack: return EaseInOutBack(start,end,value);
     case LerpType.EaseInElastic: return EaseInElastic(start,end,value);
     case LerpType.EaseOutElastic: return EaseOutElastic(start,end,value);
     case LerpType.EaseInOutElastic: return EaseInOutElastic(start,end,value);
     }
     return 0;
 }
    public static IEnumerator TranslateRescale(GameObject obj, Vector3 destPos, Vector2 destScale, float duration, LerpType lerp)
    {
        float elapsed = 0f;
        float p;

        Transform t = obj.transform;
        Vector3 startScale = t.localScale;

        Vector3 startPos = new Vector3(t.position.x, t.position.y, destPos.z);

        do
        {
            p = Lerp(elapsed / duration, lerp);
            t.position = Vector3.Lerp(startPos, destPos, p);
            t.localScale = Vector3.Lerp(startScale, destScale, p);
            yield return new WaitForEndOfFrame();
            if (t.gameObject == null) yield break;
            elapsed += Time.deltaTime;
        } while (elapsed <= duration);
        t.position = destPos;
        t.localScale = destScale;
    }
    public static IEnumerator TranslateResize(GameObject obj, Vector3 destPos, Vector2 destSize, float duration, LerpType lerp)
    {
        //float elapsed = 0f;
        // float p;

        Transform t = obj.transform;
        SpriteRenderer sr = obj.GetComponent<SpriteRenderer>();
        Vector2 startSize = sr.bounds.size;
        Vector3 startScale = t.localScale;
        Vector3 destScale = new Vector3(startScale.x * (destSize.x / startSize.x),
            startScale.y * (destSize.y / startSize.y), t.localScale.z);
        yield return TranslateRescale(obj, destPos, destScale, duration, lerp);

        /*Vector3 startPos = new Vector3(t.position.x, t.position.y, destPos.z);

        do
        {
            p = Lerp(elapsed / duration, lerp);
            t.position = Vector3.Lerp(startPos, destPos, p);
            t.localScale = Vector3.Lerp(startScale, destScale, p);
            yield return new WaitForEndOfFrame();
            elapsed += Time.deltaTime;
        } while (elapsed <= duration);
        t.position = destPos;
        t.localScale = destScale;*/
    }