Spine學習五- spine動畫融合


在許多地方,都需要用到動畫融合,unity的新版動畫系統已經能夠很方便的進行動畫融合,那么使用spine的動畫狀態機的情況下,如何來進行動畫融合呢?

官方有兩種方案,一種是使用混合動作實現,另一種是使用spine的動畫狀態機實現,這里講解一下狀態機的實現:

 1 public class cartoonCombine : MonoBehaviour {
 2 
 3     SkeletonAnimation skeletonAnimation;
 4     AnimationStateData stateData;
 5     Spine.AnimationState state;
 6     public float mixTime = 0.5f;
 7     public float mixTime2 = 0.5f;
 8     void Start () {
 9         
10         skeletonAnimation = GetComponent<SkeletonAnimation>();
11         state = skeletonAnimation.AnimationState;
12         //獲取狀態機動畫數據
13         stateData = skeletonAnimation.SkeletonDataAsset.GetAnimationStateData();
14 
15         //設置動畫混合,第一個參數是 當前動畫,第二參數是下一個動畫,第三個參數是從當前動畫過度到下一個動畫所需時間
16         stateData.SetMix("walk", "run", mixTime);
17         stateData.SetMix("run", "walk", mixTime2);
18 
19         skeletonAnimation.AnimationState.SetAnimation(0, "walk", true);
20 
21     }    
22     
23     void Update () {
24 
25         if (Input.GetKeyDown(KeyCode.A))
26         {
27             skeletonAnimation.AnimationState.SetAnimation(0, "run", true);
28         }
29 
30         if (Input.GetKeyDown(KeyCode.D))
31         {
32 
33             skeletonAnimation.AnimationState.SetAnimation(0, "walk", true);
34         }
35     }

將該腳本掛到一個掛有 SkeletonAnimation 組件的物體上,需要確保 SkeletonAnimation的Spine資源里面有"walk" 和"run"這兩個動畫,否則會出錯,然后在運行狀態下查看動畫融合的效果。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM