2017-06-29 24 views
0

我有一個2D項目中有一個動畫組件的精靈。我正試圖找到一種獲取當前動畫的當前幀的方法。我發現,如果你有專門添加的每個動畫作爲精靈的組件,你將能夠做這樣的事情:找到一個動畫是在統一的2D幀

if (animation["attack"].time > 0.333 < animation["attack"].time < 0.5) { 
    //do something interesting 
} 

這是假設動畫的名字是攻擊,並且您正在使用您的遊戲幀率作爲參考。這將是完美的我在做什麼,因爲我有三個不同的跳躍的動畫,被用於當角色行走動畫是在他走不同的地方各一個,這樣看起來更光滑。這是不可能的,因爲我沒有使用動畫組件。我試過這樣的事情:

anim = GetComponent<Animator>(); 

if (anim.GetCurrentAnimatorClipInfo().animation.time > 0.333 < anim.GetCurrentAnimatorClipInfo().animation.time < 0.5) { 
    //do something interesting] 
} 

但這並不奏效。任何人有任何建議?

回答

0

獲取動畫師AnimatorStateInfo那麼它AnimatorStateInfo。乘AnimatorClipInfo.clip.lengthAnimatorStateInfo.normalizedTime來獲取當前時間。

AnimatorStateInfo animationInfo = anim.GetCurrentAnimatorStateInfo(0); 
AnimatorClipInfo[] animationClip = anim.GetCurrentAnimatorClipInfo(0); 

float time = animationClip[0].clip.length * animationInfo.normalizedTime; 
+0

通過這樣做你會得到什麼樣的「時間」結果? –