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