直接上代碼:
//動畫名稱 private const string ANIM_NAME = "Take 001"; //模型對象 private GameObject obj = null; //動畫長度 private float animLegth=0f; //動畫組件 private Animation m_Animation=null; 栗子代碼: //得到模型動畫 //obj = GameObject.Find("man"); //得到動畫的播放長度;舊版本可以直接獲取 obj.animation.animation[ANIM_NAME].length,5.X之后的應該都需要獲取Animation組件 m_Animation = obj.GetComponent<Animation>(); animLegth= m_Animation[ANIM_NAME].length; //播放動畫 : 1 m_Animation.Play();//播放默認動畫 m_Animation.Play("xx");//播放xx動畫,默認是停止同一層的其他動畫;作用同m_Animation.Play("xx",PlayMode.StopSamLayer); m_Animation.Play("xx",PlayMode.StopAll);//播放xx動畫,所有當前播放的動畫都停止 //2:在一定時間內淡入名稱為animation的動畫 m_Animation.CrossFade(string:animation); m_Animation.CrossFade(string:animation,float:time); m_Animation.CrossFade(string:animation,float:time,PlayMode:playMode); //判斷動畫是否播放完畢;normalizedTime: 范圍0~1, 0是動作開始,1是動作結束;但是對於Animation好似沒用,Animator是可以的,建議可以嘗試下,判斷normalizedTime的值是否處於0.8~0.9嘗試,或者其他定時/委托 if (m_Animation.IsPlaying("xx") && m_Animation["xx"].normalizedTime >= 1) //倒放動畫 m_Animation["xx"].speed = -1f*設置的動畫播放速度;
//加速可以直接在正值的基礎上乘N倍 栗子:m_Animation["xx"].speed = 1f*N;
//停止播放動畫 m_Animation.Stop(); m_Animation.Stop("xx");
注:一個要格外注意的點,一旦用了倒放動畫,播放完畢之后,要恢復;不然動畫只播放一遍;
