郭禧珍
(广州市商贸职业学校 广东 510410)
Flash游戏以其炫酷的视觉效果、便捷的操作方式、良好的交互性、对客户端无太高要求、适合网络发布和传播等特点成为当前游戏主流,而Flash也因此成为当前最流行的游戏制作软件,Actionscript3.0脚本语言的推出使得开发交互性的游戏更加容易。
Flash课程作为我校动漫专业一门必修课,在这样的背景下,我校在原Flash动画课程的基础上增加了Actionscript3.0游戏设计课程,并作为我校的精品课程之一。笔者,以其中一个自编的教学案例“火柴人”游戏为例,阐述在Flash中运用Actionscript3.0实现碰撞类小游戏的设计制作。
该游戏作为学生初学Actionscript3.0脚本语言的教学案例,因此游戏规则设置较为简单,设计该游戏的主要目的是让学生了解Actionscript3.0中检测碰撞的主要方法。游戏利用N2、O2、H2O、C2O等气体灭火或助火的化学原理,通过玩家控制键盘左右键使“火柴人”左右移动来迎接O2小球而躲避N2、H2O、C2O等小球,其中O2可使火柴人生命增长, H2O、C2O将减弱火柴人生命力,N2则使火柴人丧失生命。
游戏界面分为四部分设计,包括:初始界面、开始界面、过程界面、结束界面。游戏初始界面为游戏标题动画及Enter按钮的显示,游戏开始界面如图1所示,游戏过程界面如图2所示,游戏结束界面主要显示“你挽救火人的生命失败了!”及“再玩游戏”按钮。
图1 游戏界面
图2 游戏过程
游戏过程中,各种气体以小球ball形式坠落,“火柴人”初始生命值为5,当“火柴人”生命值为0时游戏结束。火柴人生命力以分数形式展现,初始分为500,当碰O2加200分、H2O扣100分、C2O扣200分、N2生命值减1且分数清0,在此过程中当分数小于0时生命值减1且分数清0。
包括背景图,按钮(如Enter:an1、开始游戏:an2等),影片剪辑(如火柴人:fireman、小球:ball、鼠标指针:sb1等)。其中,fireman的19个关键帧分别为火柴人从大到小的19种不同形态,表示火柴人遇不同气体时火焰的大小变化;ball有4个关键帧分别显示4种不同气体的名称及其代表颜色。
2.2.1 鼠标隐藏、替换与侦听
为了使游戏更炫、使鼠标指针更贴合本游戏的主题,因此通过Mouse.hide( )隐藏鼠标并替换为火柴头图案sb1。另外为了使鼠标在可控范围内移动,通过addEventListener( )方法进行鼠标侦听。如下代码:
2.2.2 产生随机下落的小球
为了随机生成四种不同气体的小球,程序中运用Math.random( )函数及Math.floor( )取整的方法产生1~4随机整数,并通过gotoAndStop( )方法调用影片剪辑ball中的各帧,以获得各小球。
2.2.3 火柴人移动控制
火柴人的移动是通过控制键盘的左右键进行的,因此通过侦听键盘激活向左、向右键的使用。
2.2.4 火柴人与小球碰撞检测
hitTestObject ( )是Actionscript3.0中最简单的碰撞检测方法,它用于判断两个显示对象displayObject是否重叠或相交,如果相交则该方法返回值为true,否则为false,其基本格式为:displayObject1.hitTestObject(displayObject2)。
本游戏就是采用hitTestObject ( )的方法对火柴人与小球进行碰撞检测,并按规则实现对火柴人的生命力及生命值的再赋值。游戏中通过for语句检测下落的每个小球,再通过if语句结合hitTestObject ( )方法进行判断,以火柴人遇H2O球为例,代码如下:
2.2.5 分数、生命值
火柴人的生命值决定了游戏是否继续,当生命值lifen<=0时,游戏结束。根据本游戏规则,火柴人初始生命值为5(lifen = 5),其生命力分数score为500 (score = 500),游戏中检测碰撞并按规则进行加减分计算,当score<=0时,火柴人的生命值减1。生命值和生命力分数在游戏界面中的动态文本区中直接显示。
本设计通过Flash ActionScript 3.0实现了一个碰撞类小游戏的制作,程序中采用了hitTestObject ( )方法进行碰撞检测,该方法利用对象矩形范围的相交判断,因此提高了本游戏碰撞的灵敏度。作为教学基础案例在本游戏的规则设置中,对分数没有设置上限,因此游戏还可继续改进,设置分数上限,当满足条件可增加火柴人生命力,当生命力达到一定的上限,则可冲关进入第二关游戏,这将作为学生对该游戏扩展学习的要求,使其成为一个闯关游戏。
[1] Flash ActionScript 3.0动画高级教程[M].北京:人民邮电出版社.2010.01.
[2] 杨东昱.Flash动画即战力ActionScript 3.0范例随学随用[M].北京:清华大学出版社.2009.10.
[3] 明昀.Flash中碰撞检测技术的研究与应用[J].中国科技信息.2011(16)