Chinaunix首页 | 论坛 | 博客
  • 博客访问: 874813
  • 博文数量: 372
  • 博客积分: 10063
  • 博客等级: 中将
  • 技术积分: 4220
  • 用 户 组: 普通用户
  • 注册时间: 2012-02-24 11:36
文章分类

全部博文(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,此框架的功能和方便性可能不是很好,大家看看就好,有兴趣的朋友可以去下载源代码查看^-^:

阅读(963) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~