全部博文(372)
2012年(372)
分类: 虚拟化
2012-03-21 16:52:49
游戏中,经常会有这样的需求,即播放一段电影,给玩家更好的体验。比如摄像机朝向某两个NPC,两个NPC在那里交谈之类的。
在用Unity3D制作游戏的过程中,也经常会遇到这样的需求,所以在此花时间搭建了一个简单的电影模式框架,目的在于较方便的构建游戏中需要的电影模式需求。
此框架的构想是这样的:电影由一个个关键帧组成,每个关键帧代表一种电影模式功能,如摄像机的动画,角色的动画等等。此框架中提供了简单的摄像机关键帧。我们在Unity3D中完成所有关键帧的编辑,并且存为电影文件,然后在游戏中就可以直接读取文件进行播放了。下面就简单的介绍一下。
首先打开编辑器,从Movie菜单中选择Create:
随后在Hierarchy中便会出现所创建的Movie对象,并且在此对象上添加了Movie脚本组件:
该脚本有一个Total Time变量和一个Save按钮,Save按钮就是用来保存电影文件的,稍后会说。Total Time就是需要指定的电影的总时长,单位为秒,该变量是用来控制电影的播放结束的。
随后我们就可以添加各种关键帧,此框架中提供了摄像机关键帧,我们就来添加一个摄像机关键帧。首先在场景中创建一个对象,该对象是用来添加关键帧的:
接着选中刚创建的对象,从Movie菜单中选择Add Key Frame -> Camera:
此时选中的对象中就会包含CameraKeyFrame脚本组件:
CameraKeyFrame脚本组件的可编辑功能如下:
Start Time是每个关键帧都会有的数据,指定该关键帧开始执行的时间,单位为秒。
Signature用于标识该关键帧将控制的场景中的对象,当勾选Is Tag时,表示的是给予将控制的场景中的对象的标签,而没有勾选Is Tag时,表示的是将控制的场景中的对象的名称。
Is Draw Path表示是否需要绘制关键中包含的路径点
Path Point Size表示绘制的路径点的大小
Editor按钮也是每个关键帧都会有的,用来打开关键帧编辑窗口
AddPathPointInfo按钮用于添加路径点信息
首先我们要做的就是设置Signature变量,由于我打算控制场景中的MainCamera,所以我设置如下:
然后就可以使用AddPathPointInfo按钮来添加路径点信息了,添加路径点信息实际的工作步骤是这样的:
首先会根据Signature和Is Tag变量来查找相应的GameObject,然后就读取该GameObject的localPosition和localRotation作为路径点信息,这里我们直接添加2个路径点信息。添加完路径点信息后,可以通过Editor按钮打开编辑窗口进行查看和修改:
可以发现,记录的就是指定的GameObject的信息。
这里还有一个Time变量,用于指定变换到该路径点所需的时间,单位为秒。
这里我们为了看效果,把第二个路径点信息修改下:
它代表的含义是当电影开始播放时,当此关键帧执行之后,将消耗0秒从指定的GameObject的位置变换到(0, 0, -3.48),接着将消耗5秒从(0, 0, -3.48)变换到(3.37, 0, -3.48)。旋转量没变化。
由于我们的摄像机关键帧的Start Time为0,也就是当电影一播放就将执行,而我们的摄像机关键帧的数据执行需要消耗5秒,所以电影总时间我们设定为6秒:
然后我们就可以保存我们编辑完的电影了,选择刚刚创建的Movie对象,有一个Start按钮,点击后,选择保存路径文件就可以了:
接着我们可以选择看效果,首先必须进入运行模式,接着就可以单击Movie菜单中的Play项,此时会需要选取要播放的电影文件,选中文件后就可以看效果啦^-^,我们会发现指定的GameObject对象发生了我们先前说明的操作:
除了播放之外,我们也可以载入电影文件进行编辑,选择Movie菜单中的Load项,打开需要编辑的电影文件即可:
我们选择刚才保存的文件,就可以看到所有刚才完成的数据了,就可以在此基础上继续编辑修改:
好了,框架以及摄像机关键帧的使用就是这样,可能解释的并不是很清楚,大家有问题可以提问,我会及时回答的,由于初学Unity3D,此框架的功能和方便性可能不是很好,大家看看就好,有兴趣的朋友可以去下载源代码查看^-^: