2016-06-13 50 views
0

來自iOS背景我很努力地將簡單的GameObject從A移動到B。 有沒有什麼像animateWithDuration(duration: NSTimeInterval, animations:() -> Void, completion: ((Bool) -> Void)?)Unity animateWithDuration相當於,將gameobject設置爲位置

我認爲這是不方便更改更新轉換。我無法使用動畫視圖和動畫製作器,因爲無法使用此工具更改目標位置。

回答

0

從iOS背景的也 我建議如下:

class AnimationModule: MonoBehaviour 
{ 

    public delegate void AnimationBlock(float progress); 

    public Task animateWithDuration(float duration, AnimationBlock animation, Action completion) 
     { 
      StartCoroutine(coroutine__animation(duration, animation, delegate 
      { 
       completion(); 
      })); 

      return Task.Delay(millisecondsDelay: (int)(duration * 1000)); 
     } 

    private IEnumerator coroutine__animation(float duration, AnimationBlock animation, Action completion) 
     { 
      float startingTime = Time.time; 
      float timeCounter = startingTime; 

      while (timeCounter < (startingTime + duration)) 
      { 
       float p = (timeCounter - startingTime)/duration; 
       animation(p); 
       timeCounter = Time.time; 
       yield return null; 
      } 

      completion(); 
     } 
} 

其將被這樣使用:

Task anim1 = GetComponent<AnimationModule>().animateWithDuration(duration: 2.0f, animation: (float p) => { 

            card.transform.localPosition = position_from + p * (new Vector3(100, 0, 0)); 

           }, completion:() => { 

            Debug.Log("animateWithDuration, completion"); 

           }); 

鑑於重要的是,要回答這個問題,就是要接近iOS風格。

它的工作原理,但我不知道它的性能表現是否良好。

我使用實驗單音以便使用Task等。

相關問題