Ejemplo n.º 1
0
    //IncreaseScale : Object의 Scale을 (startScale ~ targetScale) 범위에 걸쳐 변화시킨다.
    //변화 속도는 speed로 지정하고, mode 매개변수로 Y축을 Scale 변화에 포함시킬지 여부를 결정한다.
    //destoryTime 지정시 해당 시간 이후 Destory한다.
    //Update를 사용하며, 다른 Update 사용 Method와 중복 사용할 시 어떻게 될 지 예측할 수 없음
    public void IncreaseScale(float speed, float startScale, float targetScale, IncreaseScaleMode mode = IncreaseScaleMode.WithoutYAxis)
    {
        if (startScale < 0f || startScale == targetScale)
        {
            throw new System.ArgumentOutOfRangeException(nameof(startScale), $"Must be greater than or equal to 0, not equal to {nameof(targetScale)}.");
        }
        if (targetScale < 0f)
        {
            throw new System.ArgumentOutOfRangeException(nameof(targetScale), "Must be greater than or equal to 0.");
        }
        if (speed == 0f)
        {
            throw new System.ArgumentOutOfRangeException(nameof(speed), "Must not be equal to 0.");
        }
        if ((startScale < targetScale && speed < 0f) || (startScale > targetScale))
        {
            throw new System.ArgumentOutOfRangeException(nameof(speed), $"{nameof(targetScale)} - {nameof(startScale)} and {nameof(speed)} must have the same sign.");
        }

        Vector3 scale = Vector3.one * startScale;

        if (mode == IncreaseScaleMode.WithoutYAxis)
        {
            scale.y = transform.localScale.y;
        }
        transform.localScale = scale;
        updateMethod         = ScaleUp(speed, targetScale, mode);
    }
Ejemplo n.º 2
0
 private Method ScaleUp(float speed, float targetScale, IncreaseScaleMode mode)
 {
     return(() =>
     {
         Vector3 scale = Vector3.one * speed * Time.deltaTime;
         if (mode == IncreaseScaleMode.WithoutYAxis)
         {
             scale.y = 0;
         }
         transform.localScale += scale;
         if (transform.localScale.x >= targetScale)
         {
             scale = Vector3.one * targetScale;
             if (mode == IncreaseScaleMode.WithoutYAxis)
             {
                 scale.y = transform.localScale.y;
             }
             transform.localScale = scale;
             updateMethod = null;
         }
     });
 }
Ejemplo n.º 3
0
 public void IncreaseScale(float speed, float startScale, float targetScale, float destroyTime, IncreaseScaleMode mode = IncreaseScaleMode.WithoutYAxis)
 {
     IncreaseScale(speed, startScale, targetScale, mode);
     SetTimer(destroyTime, TimerAction.Destory);
 }