关于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 }