手机游戏即时演算Trailer制作

手机游戏即时演算Trailer制作

 

手机游戏即时演算Trailer制作

 

Trailer是什么?拖车,追踪者? Trailer既不是马路上的拖车,也不是生化危机里的追踪者。Trailer在我们的游戏中表现为一段自动的剧情介绍,就像许多PC游戏中的过场电影一样。它可以使玩家更快的融入到故事情节中,对游戏故事情节的叙述和推动起了很大的作用。 组成 Trailer的播放是以帧为单位的,在每个帧中包含了其中的角色信息,依据这些信息就可以把整个Trailer播放出来。所以在微观上Trailer是一些纪录着整个动画中角色和帧属性的信息序列。主要分为角色信息和帧信息。角色信息中记录了角色的动画类型,它的初始动作编号,出场的位置等。帧信息描述了当前几帧中所有角色的初始动作,在当前Trailer中的角色编号,角色的初始方向,持续的实际帧数,还有在这个Trailer中角色对话信息和一些显示在屏幕上的附加文字信息。 数据在播放中的组织在开始播放一段Trailer时,我们需要根据头一帧的角色信息确定这一帧所有的角色的方向,初始化它们的动作及确定焦点角色。然后开始播放这一帧,在播放中当然要根据角色自身的属性更新它们的位置信息,还要移动我们的摄像机,画背景,画排序过的角色。到这为止Trailer的主要内容已经画出来了。但是文字同样是介绍一段剧情不可缺少的东西,所以接下来要设置一些状态以便人物间的对话及一些附加文字得以显示,也可以做一些特殊的显示工作。最后则是根据帧计数器的纪录判断是不是要进行下一帧的播放了,如果所有帧播放完了则释放Trailer所占用的内存,退出播放。我们重复上面过程即可得到播放Trailer的方法:

 if (当前帧的第一帧) {

 if (当前帧内有焦点角色) m_focus =当前帧内的焦点角色;

 for (当前帧内每个角色i) {

 a.direction = 当前帧内角色i的方向;

 a.changeAction(当前帧内角色i的动作);

}

}

sort(所有要显示的Trailer角色);

for (所有Trailer角色i) 根据角色i的速度属性更新角色i的位置;

 setFocusActor(Trailer角色中第m_focus号);

更新摄像机位置();

 画背景();

画排序后的所有角色;

if (有对话信息) 设置对话信息以便显示;

 if (有附加文字信息) 设置对话信息以便显示;

 . 帧计数器++; if (帧计数器 >= 当前帧持续时间) {

当前帧++; 帧计数器 = 0;

}

 if (当前帧 >= 帧总数) {

清理内存;

 return;

}

创建一段Trailer 编辑器 trailereditor.exe 新建Trailer trailereditor.exe, 选择地图。加入角色加入一帧编辑一段剧情把剧情放到游戏中 convert.exe 零碎问题托拽主角由于Trailer之前的角色位置要在Trailer播放中保留,并基于这个位置运动,而且在播放后角色位置也要保留,同时Trailer的播放要使主角开始于一个固定位置。所以,如果触发Trailer时主角位置不在这个位置上,我们就要让它自己走到这个位置上,然后再开始Trailer,才能使播放正确。 跳过Trailer 由于这些信息只描述了Trailer播放中各个时间段中角色运动情况,而这些信息是递推描述的,即每个段的运动要以前一个段段尾角色位置情况为基础。再加上上面问题中提到的“播放后角色位置也要保留”,使我们必须把整个Trailer播放过程用一个循环括起来且不画背景和角色,来模拟这个过程,才能完成这个功能。这也算是这个系统的一个问题吧。 延续和地图 Trailer信息中还有些信息记录了紧挨着的下一个Trailer的id和Trailer之后的关数id,如<0则表示没有接着的Trailer或不切换关。地图问题是指每一个Trailer都是在一个特定的关卡地图上进行的,所以当然还有信息记录了当前Trailer需要那张地图的id,在Trailer信息读入之前还必须读入相应场景的地图。 

 

 

www.J2meGame.com精心收集,转载请说明。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值