Unity3D中Animation的初级使用方法及技巧

这一节说一下如何使用Unity的Animation编辑器控制GameObject的一些动画效果。并简述如何为Animation添加Event事件的方法。
首先,先创建一个Gameobject例子,这里我们还是Create 一个 Cube好了。



创建Animation:

创建完成后我们将其拉到摄像机镜头的左侧一会方便添加位移动画。接下来在Project视窗中Create一个Animation,命名为Move,我们来看一下Animation的几个属性:

Compressed(压缩)、Sample Rate(采样频率)这里默认就好,说一下 Wrap Mode(换行模式),这里有好几种模式分别为 Default(默认)、Once(一次)、Loop(循环)、PingPong(乒乓)、ClampForever(。。。这个有点难翻译)这五种模式。
Default、Once、Loop 都比较好理解,下面说一下PingPong其实也是类似乒乓球一样,是个随机的表示,比如Mathf.PingPong,确实有这样的函数。

我们来看一下官方的解释 WrapMode.PingPong: Ping Pong’s back and forth between beginning and end. 说点有点不明不白,大意就是当当前动画片段播放完最后一帧之后,将随机的在第一帧与最后一帧之间来回播放,可以想象这样的效果估计会很凌乱。。。

另外看一下WrapMode.ClampForever: Plays back the animation. When it reaches the end, it will keep sampling the last frame. 我们看一下最后一句“keep sampling the last frame”,保持最后一帧的采样状态,什么是采样,这里就不另外说了,否则引申出来的内容多到说不完,现阶段我们理解为一直保持在最后一帧的状态就可以了。

以上两种模式对初学者来说几乎用不到,通常我们使用的还是Once和Loop模式多一些。至于Bounds是这个Animation的包围盒,现在暂时用不上就不解释了。

使用Animation编辑器:
介绍完Animation的几个界面属性之后,我们将Move拖放到Cube上,既绑定到Cube上,然后点击菜单栏上[Window]->[Animation]或者快捷键Ctrl+6 打开Animation编辑器窗体,如下图

点击左上角红色按钮,开始录制动作,Transform栏目下的内容我就不解释了,都是Gameobject的基本属性,选中其中一个属性,点击右侧小箭头,选择AddKey添加关键帧,这里不科普了类似Flash的动画编辑器,创建出一套唯一动画之后,我们的Animation就制作完成了:

点击播放就可以看到预览效果。

为Animation添加Event事件:
这里的Event其实就是一个触发函数,如何添加呢,我们需要编写一个脚步,在脚步中创建一个函数体,并将脚本绑定在Animation所在的GameObject上,点击Animation编辑器上的Add Event 按钮,添加事件帧。此时很多朋友肯能忘记给Event添加一个函数,运行时就会报错:AnimationEvent has no function name specified! ,解决方法是要么去掉这个事件帧,要么为其添加一个function。

有时候有些朋友明明为Event添加了Function但还是报AnimationEvent has no function name specified!的错误,这个时候大家细心检查下是不是在同一个位置上添加了多个Event,通常都是这个原因引起的。

使用脚本控制Animation:

使用脚本控制Animation要说的东西相当庞大,这里仅仅做一个小小的引导,更多的内容请大家参考API自己去探索。我们可以在刚才的Stop()函数里添加控制脚本,也可以另行获取这个GameObject.Animation来进行,原理都是一样的,脚本如下:

1
2
3
4
5
6
7
8
void stop ()
{

        gameObject.animation.Stop();//停止回到第一帧

        gameObject.animation["你的动作名"].speed = 0;//暂停
   
}

查了下API貌似Animation没有Pause暂停功能,所以只能设置AnimationState.speed=0 来进行暂停,意味播放速度为0,如果要再次播放,把值改成1即可。
同时通过speed的值的修改我们还可以实现动画快放和慢放的效果,而如果将speed设置为负值,将实现回放的效果。是不是觉得相当强大。事实上我们的探索才刚刚开始。

总结:
Animation的内容如果要全部说完本篇估计再延长10页也无法阐述完毕,大家如果感兴趣可以参考API进行各种尝试。另外一些精确的Animation是需要在maya或者3Dmax里创建好然后导入的,比如一个游戏人物的攻击,行走等等。

本篇暂且到此,欢迎大家交流讨论。

BeiTown
2012.12.27

本文链接: Unity3D中Animation的初级使用方法及技巧

转载声明:BeiTown原创,转载请注明来源:BeiTown's Coder 编码之源,谢谢


Tags: , , , ,

4 Responses to Unity3D中Animation的初级使用方法及技巧

  1. 大能猫 说道:

  2. 莫失,莫忘! 说道:

    (色)

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>