快速业务通道

Flash赛车游戏

作者 佚名技术 来源 服务器技术 浏览 发布时间 2012-07-13


大家好~!这次我打算给大家讲一个比较复杂的例子,用Flash做赛车游戏。不过这次我不会把整个程序都摆出来给大家讲解,因为程序确实太复杂不能把版面都消耗在程序上。在讲解整个过程之前我希望大家明白,一个成功的游戏作品是由很多环节组成。其中包括创意、制作、润色等部分。创意部分我感觉是以个人自主创新为主的环节,所以我不打算讲游戏的创意过程。我主要向大家讲解在有了游戏创意后,如何用FLASH来实现这个游戏。为了让大家熟悉我讲解的例子,我选择大家都比较熟悉的《火箭车》为创意蓝本。



我想大家都知道任天堂的《火箭车》是一款非常经典的赛车游戏,虽然它不如极品飞车那样豪华,但是它已经具有赛车游戏的所有特性,而且有非常好的操作感和游戏性。虽然这款游戏比较简单,但是如果你认为制作起来也很简单,那你就错了~!
=====================================================================

FLASH赛车游戏制作
第一章:构思

有了一个游戏基本构思以后,需要耐心的将游戏的逻辑关系细化整理。拿《火箭车》这个游戏来说,从车提速的感觉到积分撞车的规则都要仔细的琢磨、整理并记录下来。在考虑游戏实现的过程中,要考虑到FLASH的能力有限。FLASH在移动大面积图形和大量多边形的时候,会影响播放速度。下面来看看我是如何细化分析《火箭车》这个游戏的。
赛车游戏的难点在于各部件的移动效果,所以如何实现各种部件的移动,是整个游戏的关键。整个游戏的各种部件按移动规律划分为4个部份:

车道以及周围的景物

游戏中的车道是最难处理的移动部件,因为它面积大,如果部件数量过多,肯定影响速度和效果。车道循环移动是体现自己汽车移动的关键,这一部分的制作是否到位直接决定了你操纵自己汽车的感觉。经过一些简单的程序测试,我决定采用部件循环的做法来实现车道两旁的栏杆和中心的白色实线。



由于它们不是恒定速度移动的,所以需要用程序根据速度来计算每次向前播放的帧数。值得一提的是,用这种方法实现栏杆和中心线的循环播放是因为这两件东西移动非常有规律,只需要做一格中心线长度的循环就可以了。不过这种方法并不适合起始点和结束点标志的制作,



因为他们是贯穿屏幕上下的部件,而且只出现一次。所以需要另行制作一个影片片段,用程序根据速度和总里程进行控制显示。车道两旁的景物是很耗费资源的事情,本来也想进行模仿的不过最后因为速度的关系,还是砍去了大部分景物。

敌人的汽车和路障

敌人的汽车和路障是程序比较复杂的一个部分,路障比较简单,因为它们的移动和启始点部件的移动方式是一样的,只需要增加碰撞检测程序即可。敌人的汽车分六种每一种都有自己的移动规律,黄车只按固定位置行驶、红车和一种蓝车会在靠近时移动一次、有两种蓝车会不停的移动、卡车按固定路线行驶但撞上了就爆炸,当然还有人见人爱的加油彩车。敌人的汽车需要根据自己汽车行使速度的不同而处于不同的相对移动状态,就是说你可以加速超越它们也可以减速看着它们消失,而且其中有些车辆还会自己移动。这听起来比较复杂,但在实际制作过程中我发现还是比较简单的。有了启始点部件的移动算法为基础,在速度运算结果上加一个固定的数值就实现了根据速度相对移动,再加上一些汽车定位检测实现碰撞检测就可以了,不同类型的汽车内部有用不同的小程序来实现移动和碰撞。整个障碍系统采用里程数触发的办法来决定,障碍出现在那里是什么种类的障碍。



自己的汽车

对于实现自己汽车的程序,主要要解决的是两边路障的限制,左右移动和加减速要流畅。碰撞后车身先倾斜滑动,接着旋转。如果用户在碰撞后仍然加速,就会增加车子被撞坏的可能性。



如果操纵者在车子碰撞倾斜滑行期间向滑行方向移动,就可以使车子恢复正常。在实现过程中最难的部分是如何获得平滑的操作感,如果简单的使用ON MOUSE EVENT来捕获方向键的话,你会发现当你一直按着加速键加速的时候按任何一个键都会使加速键失效。而且汽车无论是加速还是移动,都会有严重的停顿,要解决这个问题是个难点。

最左边的路程进度指示

这是整个游戏中最好解决的一部分,只需要根据设定好的里程总数算出一个移动单位来移动标志车就可以了。

游戏中各种数值的逻辑规律:

分值计算:每超过一辆赛车加分,根据车辆不同加分也不同。在设计超车加分程序时要注意,每辆车只能进行一次加分。到达终点后剩下的油量按每格30分加分。吃加油彩车加1000分。如果能不撞坏车完成全部路线的2/3会出现超人,加1000分(安全驾驶奖??)。

油量计算:油量计算看起来是很简单的按照时间来递减就可以了。但应考虑到FLASH的运行速度是不稳定的,运行主机速度的快慢和当时画面中移动多边形的数量多少,都会对FLASH的运行速度产生影响。所以不能采用时间为度量标准了,这一点不仅是赛车游戏是这样,其它的游戏也是一样。

速度计算:速度值可不是摆设,这个值是直接参加运算的。用来移动两旁的栏杆和中心白色实线的单位帧数就是根据速度值进行计算的。在《火箭车》游戏中速度是有高速档和低速档的,加速和减速都是恒定值进行的。

以上呢就是我对《火箭车》这个游戏的分析和程序的难点分析,有了这些资料就可以开始程序设计了。本来我打算彻底翻版这个游戏的,但是考虑到FLASH的能力和容量,我觉得应该有所取舍。当然了因为程序是自己写的想怎么改都可以,比如让火箭车开炮??谁知道呢!呵呵。~!好了本次就讲解这些了,如果你感觉有些心得,不妨自己先试着做做看。 关键词:

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号