郭禧珍
(廣州市商貿(mào)職業(yè)學(xué)校 廣東 510410)
Flash游戲以其炫酷的視覺效果、便捷的操作方式、良好的交互性、對(duì)客戶端無太高要求、適合網(wǎng)絡(luò)發(fā)布和傳播等特點(diǎn)成為當(dāng)前游戲主流,而Flash也因此成為當(dāng)前最流行的游戲制作軟件,Actionscript3.0腳本語言的推出使得開發(fā)交互性的游戲更加容易。
Flash課程作為我校動(dòng)漫專業(yè)一門必修課,在這樣的背景下,我校在原Flash動(dòng)畫課程的基礎(chǔ)上增加了Actionscript3.0游戲設(shè)計(jì)課程,并作為我校的精品課程之一。筆者,以其中一個(gè)自編的教學(xué)案例“火柴人”游戲?yàn)槔?,闡述在Flash中運(yùn)用Actionscript3.0實(shí)現(xiàn)碰撞類小游戲的設(shè)計(jì)制作。
該游戲作為學(xué)生初學(xué)Actionscript3.0腳本語言的教學(xué)案例,因此游戲規(guī)則設(shè)置較為簡(jiǎn)單,設(shè)計(jì)該游戲的主要目的是讓學(xué)生了解Actionscript3.0中檢測(cè)碰撞的主要方法。游戲利用N2、O2、H2O、C2O等氣體滅火或助火的化學(xué)原理,通過玩家控制鍵盤左右鍵使“火柴人”左右移動(dòng)來迎接O2小球而躲避N2、H2O、C2O等小球,其中O2可使火柴人生命增長(zhǎng), H2O、C2O將減弱火柴人生命力,N2則使火柴人喪失生命。
游戲界面分為四部分設(shè)計(jì),包括:初始界面、開始界面、過程界面、結(jié)束界面。游戲初始界面為游戲標(biāo)題動(dòng)畫及Enter按鈕的顯示,游戲開始界面如圖1所示,游戲過程界面如圖2所示,游戲結(jié)束界面主要顯示“你挽救火人的生命失敗了!”及“再玩游戲”按鈕。
圖1 游戲界面
圖2 游戲過程
游戲過程中,各種氣體以小球ball形式墜落,“火柴人”初始生命值為5,當(dāng)“火柴人”生命值為0時(shí)游戲結(jié)束。火柴人生命力以分?jǐn)?shù)形式展現(xiàn),初始分為500,當(dāng)碰O2加200分、H2O扣100分、C2O扣200分、N2生命值減1且分?jǐn)?shù)清0,在此過程中當(dāng)分?jǐn)?shù)小于0時(shí)生命值減1且分?jǐn)?shù)清0。
包括背景圖,按鈕(如Enter:an1、開始游戲:an2等),影片剪輯(如火柴人:fireman、小球:ball、鼠標(biāo)指針:sb1等)。其中,fireman的19個(gè)關(guān)鍵幀分別為火柴人從大到小的19種不同形態(tài),表示火柴人遇不同氣體時(shí)火焰的大小變化;ball有4個(gè)關(guān)鍵幀分別顯示4種不同氣體的名稱及其代表顏色。
2.2.1 鼠標(biāo)隱藏、替換與偵聽
為了使游戲更炫、使鼠標(biāo)指針更貼合本游戲的主題,因此通過Mouse.hide( )隱藏鼠標(biāo)并替換為火柴頭圖案sb1。另外為了使鼠標(biāo)在可控范圍內(nèi)移動(dòng),通過addEventListener( )方法進(jìn)行鼠標(biāo)偵聽。如下代碼:
2.2.2 產(chǎn)生隨機(jī)下落的小球
為了隨機(jī)生成四種不同氣體的小球,程序中運(yùn)用Math.random( )函數(shù)及Math.floor( )取整的方法產(chǎn)生1~4隨機(jī)整數(shù),并通過gotoAndStop( )方法調(diào)用影片剪輯ball中的各幀,以獲得各小球。
2.2.3 火柴人移動(dòng)控制
火柴人的移動(dòng)是通過控制鍵盤的左右鍵進(jìn)行的,因此通過偵聽鍵盤激活向左、向右鍵的使用。
2.2.4 火柴人與小球碰撞檢測(cè)
hitTestObject ( )是Actionscript3.0中最簡(jiǎn)單的碰撞檢測(cè)方法,它用于判斷兩個(gè)顯示對(duì)象displayObject是否重疊或相交,如果相交則該方法返回值為true,否則為false,其基本格式為:displayObject1.hitTestObject(displayObject2)。
本游戲就是采用hitTestObject ( )的方法對(duì)火柴人與小球進(jìn)行碰撞檢測(cè),并按規(guī)則實(shí)現(xiàn)對(duì)火柴人的生命力及生命值的再賦值。游戲中通過for語句檢測(cè)下落的每個(gè)小球,再通過if語句結(jié)合hitTestObject ( )方法進(jìn)行判斷,以火柴人遇H2O球?yàn)槔?,代碼如下:
2.2.5 分?jǐn)?shù)、生命值
火柴人的生命值決定了游戲是否繼續(xù),當(dāng)生命值lifen<=0時(shí),游戲結(jié)束。根據(jù)本游戲規(guī)則,火柴人初始生命值為5(lifen = 5),其生命力分?jǐn)?shù)score為500 (score = 500),游戲中檢測(cè)碰撞并按規(guī)則進(jìn)行加減分計(jì)算,當(dāng)score<=0時(shí),火柴人的生命值減1。生命值和生命力分?jǐn)?shù)在游戲界面中的動(dòng)態(tài)文本區(qū)中直接顯示。
本設(shè)計(jì)通過Flash ActionScript 3.0實(shí)現(xiàn)了一個(gè)碰撞類小游戲的制作,程序中采用了hitTestObject ( )方法進(jìn)行碰撞檢測(cè),該方法利用對(duì)象矩形范圍的相交判斷,因此提高了本游戲碰撞的靈敏度。作為教學(xué)基礎(chǔ)案例在本游戲的規(guī)則設(shè)置中,對(duì)分?jǐn)?shù)沒有設(shè)置上限,因此游戲還可繼續(xù)改進(jìn),設(shè)置分?jǐn)?shù)上限,當(dāng)滿足條件可增加火柴人生命力,當(dāng)生命力達(dá)到一定的上限,則可沖關(guān)進(jìn)入第二關(guān)游戲,這將作為學(xué)生對(duì)該游戲擴(kuò)展學(xué)習(xí)的要求,使其成為一個(gè)闖關(guān)游戲。
[1] Flash ActionScript 3.0動(dòng)畫高級(jí)教程[M].北京:人民郵電出版社.2010.01.
[2] 楊東昱.Flash動(dòng)畫即戰(zhàn)力ActionScript 3.0范例隨學(xué)隨用[M].北京:清華大學(xué)出版社.2009.10.
[3] 明昀.Flash中碰撞檢測(cè)技術(shù)的研究與應(yīng)用[J].中國科技信息.2011(16)