public Animator anim;
private AnimatorStateInfo animInfo;
/// <summary>
/// 控制動畫暫停和播放
/// </summary>
int playSpeed = 0;
void Update()
{
animInfo = anim.GetCurrentAnimatorStateInfo(0);
//判斷正在播放Take 001動畫
if (animInfo.normalizedTime < 0.99f && animInfo.IsName("Take 001"))
{
//第一段動畫
if (animInfo.normalizedTime > 0.19 && animInfo.normalizedTime < 0.2)
{
//達到條件時暫停播放動畫
print("暫停播放1");
anim.speed = playSpeed;
}
//第二段動畫
else if (animInfo.normalizedTime > 0.39 && animInfo.normalizedTime < 0.4)
{
print("暫停播放2");
anim.speed = playSpeed;
}
else
{
//自動設置回停止播放條件
playSpeed = 0;
}
}
}
/// <summary>
/// 開始播放動畫
/// </summary>
private void PlayAnim()
{
//設置播放動畫條件
playSpeed = 1;
}
animInfo.normalizedTime 動畫狀態標準化時間,一段動畫值爲從0~1。到1則動畫播放完畢
animInfo.IsName("Take 001") 當前播放的動畫,Take 001是動畫名稱
原理:首先要知道每段動畫結束幀,然後該段動畫結束幀除於總幀得到該結束幀在animInfo.normalizedTime 的值,最後作爲條件暫停動畫,繼續播放動畫可實現下一段動畫的啓停。
比如:有一個動畫100幀,不剪輯,需要播放多段動畫。
得知第一段的結束幀在20幀,那麼20/100=0.2,0.2則爲normalizedTime 值作爲動畫暫停條件(寫條件的時候可以設個範圍)。