關於Unity動畫系統幾個名詞概念,需要了解一下:
Animator:動畫控制器,控制Mecanim動畫系統的接口。
Animation:animation組件用於播放動畫
AnimationClip:動畫剪輯片段,儲存基於關鍵幀的動畫,是用於Animation來播放動畫。
Animation編輯面板:此面板可以進行動畫的調整,crtl+6打開animation編輯面板,默認是不能進行任何操作的,要選中做動畫的精靈才可以創建動畫。
關於創建2D動畫的方法有很多,百度搜一下不再累贅,因為美術資源已經做好了部分切圖處理,所以我直接拿已經切好的動畫來進行處理:
分別制作了Idle,open,eat,unhappy,play五個動畫剪輯片段。並制作了一個新的Animator用來作為Player的控制。
之后再Animator建立聯系,添加變量
添加各種條件,為下一步腳本控制做准備。
為Player添加PlayerObject.cs組件測試
1 public enum playerAnimState { 2 /// <summary> 3 /// 玩耍狀態 4 /// </summary> 5 play, 6 /// <summary> 7 /// 默認狀態 8 /// </summary> 9 idle, 10 /// <summary> 11 /// 張嘴狀態 12 /// </summary> 13 open, 14 /// <summary> 15 /// 吞食狀態 16 /// </summary> 17 eat, 18 /// <summary> 19 /// 失敗狀態 20 /// </summary> 21 unhappy, 22 } 23 24 public class PlayerObject : MonoBehaviour { 25 /// <summary> 26 /// 動畫狀態 27 /// </summary> 28 public playerAnimState playerState; 29 /// <summary> 30 /// 動畫控制器 31 /// </summary> 32 public Animator playerAnimator; 33 34 /// <summary> 35 /// 改變玩家狀態方法 36 /// </summary> 37 /// <param name="state">玩家狀態</param> 38 public void ChangeState(playerAnimState state) { 39 switch (state) 40 { 41 case playerAnimState.play: 42 playerAnimator.SetBool("IsPlay",true); 43 playerAnimator.SetBool("IsIdle",false); 44 break; 45 case playerAnimState.idle: 46 playerAnimator.SetBool("IsIdle", true); 47 playerAnimator.SetBool("IsOpen", false); 48 playerAnimator.SetBool("IsPlay", false); 49 break; 50 case playerAnimState.open: 51 playerAnimator.SetBool("IsOpen", true); 52 playerAnimator.SetBool("IsIdle", false); 53 break; 54 case playerAnimState.eat: 55 playerAnimator.SetBool("IsEat", true); 56 playerAnimator.SetBool("IsOpen", false); 57 break; 58 case playerAnimState.unhappy: 59 playerAnimator.SetBool("IsUnhappy", true); 60 playerAnimator.SetBool("IsOpen", false); 61 break; 62 default: 63 break; 64 } 65 } 66 }