您的位置:首页 > 移动开发 > Unity3D

Unity3D学习笔记(八)动画

2016-02-23 17:07 369 查看
动画的概念要追溯到两万五千年前的石器时代,那个时候人类就已经开始捕捉“动”的概念。我们的祖先把野牛在短时间内不同的奔跑动作连续地画在一起,刻在石壁上。虽然这与真正的动画还有较大的差异,但是最基本的元素已经出现了,那就是“帧”的概念,也就是影像动画中最小单位的单幅影像画面。后来某个法国人发现了“视觉残留现象”,发明了“留影盘”。一面画着一只鸟,另一面画着一个笼子,快速翻转这个圆盘就会发现鸟被关进了笼子。传统的2D动画就是在这个基础上发展起来的,快速地变换观众眼前的图片,让人由于视觉残留而感觉到眼前栩栩如生的动画。而我们平时说的“FPS帧数”正是每秒图片交替的次数,人眼的反应速度大约是1/24秒,因此如果FPS低于24,会让人感觉到有明显的“卡顿”。

补习完基本知识来看看Unity的动画功能,点击主菜单“Window(视窗)→Animation(动画窗口)”,当然也可以按快捷键Ctrl+6。就可以看到动画窗口了。选中需要动画的对象后,在窗口里就可以看到该对象所有可动画的属性。但在这之前必须先创建一个新的Animation Clip(动画片段)。在弹出的窗口中为所有动画文件创建一个文件夹,命名为Animations。注意这只是为了让工程面板看起来结构清晰,方便管理整个游戏里各种各样的资源。动画创建成功后就会以组件的形式附加到游戏对象上,不过此时还没有动画曲线。



在上一章里我为点光源做了个映射立方体,六个面分别贴上“上下前后左右”的图片。不过我现在要做一个类似舞厅旋转灯的效果,所以我需要用Photoshop再做一张灯光的贴图,然后替换到这六个面上。还是那个原理,图片越不透明的地方灯光会表现得越亮。所以贴图看起来就像右边一样,其实可以把边缘做成可循环衔接的样式,不过时间关系就将就一下了。



接下来要做的工作就是让这个灯光自动旋转起来,在Unity中有个差值动画的概念,如果学过Flash肯定不会对它陌生。它的工作原理很简单,比如我要实现灯光每2秒自转一周,那么只需要告诉Unity在0秒的时刻灯光的旋转角度是0,在2秒的旋转角度则是360度。我们把这两个时刻的帧叫做关键帧,Unity会很智能地帮忙计算中间任意时刻的旋转角度,并且能够在动画窗口的参数动画曲线中体现出来,非常直观。

首先要进入录制状态,点击动画工具栏中的小红点,如果它的背景变红,就表示成功进入录制状态了。此时在右边的时间轴上会出来一条红色的竖线,它表示动画播放/录制的当前时间点,并且该时间点的的参数会直接显示出来。然后点击动画工具栏的倒数第二个按钮,添加一个Key Frame(关键帧),再选中参数列表中的PointLight→Transform→Rotation.x,输入0,并按回车确认。注意即使初始值是0也要做这个步骤,这样才能添加第一个关键帧。接着把小红线拖动到2秒的位置,如法炮制,并把值改为360。一个旋转动画就完成了,点击动画工具栏中的播放按钮,可以看到点光源已经绕着x轴不停旋转啦。

Unity的动画不仅仅能快速制作数值上的变更动画,还能制作颜色的变更动画,因为在计算机中我们常见的32位颜色其实也是由红(R)、绿(G)、蓝(B)、透明度(A)组成的。其中RGB的取值0.0-1.0表示单个颜色的浓度,混合后就是最终的颜色。,A的取值也是0.0-1.0,不过表示整体颜色的透明度。所以我把灯光的颜色也动画了一下,并且添加了Y轴旋转,再加上循环播放,最终的曲线如下所示:



由于录制时的FPS太低,所以看起来很不连贯,但是在实际操作完成后是很流畅的。最后附上动画窗口曲线调整的一些小经验:

按住Alt+鼠标左键可以拖动坐标系。

按住Shift+鼠标滚轮来调整Y轴单位大小,按住Ctrl+鼠标滚轮来调整X轴大小,直接滚轮则同时调整。

在循环模式下,如果不小心把小红线拖得很远,比如我想循环2秒,结果不小心拖成10秒,那就没办法缩回去了。问了几个

朋友也说没有办法,只能通过重新建立动画解决。不知道是不是BUG,需要注意一下。

右键点击曲线上的关键帧的小方块,可以弹出曲线调整菜单,可以调整关键点左右两边的曲线变化情况。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: