【正文】
ve () : vo i d+ u p d a t e () : vo i d 圖 313 道具 類圖 食物類設(shè)計(jì) 在游戲中有吃了漲分?jǐn)?shù)的食物,產(chǎn)生食物的類是在 InGame 里面。背景音樂(lè)除了感動(dòng)情緒,還能帶動(dòng)情緒,比如 封神榜 3 游戲的時(shí)而恢弘、神秘、悠揚(yáng)的曲風(fēng)也讓游戲劇情顯得跌宕起伏。 在本游戲中, 具體設(shè)計(jì)如 315 圖所示: 32 c l a s s 背景音樂(lè)類圖S o u n d s S N D _ B G _ G A M E : C l a s s s n d B g G a m e : S o u n dG a m e co n t r o l L a ye r : S p r i t e g a m e L a ye r : S p r i t e i n G a m e : I n G a m e i n s t a n ce : G a m e w e l C o m e : W e l co m e+ ch a n g e T o W i n d o w ( ) : vo i d+ G a m e ( )+ g e t I n s t a n ce ( ) : G a m e+ i n i t L a ye r s ( ) : vo i d+ o n P l a y( ) : vo i d 圖 315 背景音樂(lè) 類圖 33 4 系統(tǒng)實(shí)現(xiàn) 我方角色移動(dòng)功能實(shí)現(xiàn) 實(shí)現(xiàn)原理 要想完成對(duì)游戲角色的操控,首先給游戲窗口添加鼠標(biāo)點(diǎn)擊和按下監(jiān)聽(tīng)器,根據(jù)玩家的操作,系統(tǒng)捕捉到事件,然后完成具體的響應(yīng)。 case : 玩家撞上敵人后怎么處理 break。游戲主控類 InGame 還要負(fù)責(zé)時(shí)刻更新游戲畫面。 我們只要知道兩個(gè)物體是否有在同一時(shí)間內(nèi)某個(gè)部分處在了同一位置上。獲得兩個(gè)物體間的距離,然后問(wèn)“物體間是否近得足夠發(fā)生碰撞了?”,應(yīng)用這種方法時(shí)需要計(jì)算并判斷距離。amp。從技術(shù)層面上來(lái)講,所謂粒子效果,就是一些著色了的方塊在不停地各自運(yùn)動(dòng),并加以一些特殊的混合模式之后所得到的一種漂亮效果。 需要注意的是,在 Starling 中,粒子被認(rèn)為是一個(gè)動(dòng)畫對(duì)象,因此在使用它的時(shí)候應(yīng)該把粒子對(duì)象添加到一個(gè) Juggler 對(duì)象中才能看到動(dòng)畫的播放: //加載工具產(chǎn)生的文件 [Embed(source=res/)] static var particleTexture:Class。 gameTextures[name] = t。 } return gameTextureXML[name]。 ()。 ()。 緩動(dòng)引擎 Starling 天生支持補(bǔ)間動(dòng)畫并實(shí)現(xiàn)了一套其特有的補(bǔ)間動(dòng)畫引擎,其支持絕大多數(shù)的緩動(dòng)方程,其中有: 40 在下面的代碼中,我們使用補(bǔ)間動(dòng)畫來(lái)緩動(dòng)改變一個(gè) TextField 對(duì)象的 x, y 屬性,并用上一個(gè) bounce的緩動(dòng)特效: var t:Tween=new Tween(bmpFontTF,4, )。 在該游戲中我有幾中產(chǎn)生食物的方式: //水平 if(pattern==1 amp。 ()){ 這種形狀持續(xù)的時(shí)間和產(chǎn)生的位置 } 41 //Z字 else if(pattern==3 amp。 ()){ 這種狀態(tài)持續(xù)的時(shí)間 } 保存最高分?jǐn)?shù) 在該游戲中先 搜索本地是否有過(guò)以前玩過(guò)的記錄,如果有記錄,就導(dǎo)入該記錄(只有最高分?jǐn)?shù));如果沒(méi)有,就只有在玩過(guò)一局產(chǎn)生分?jǐn)?shù)后作為最高分。 }else{ ar fs:FileStream = new FileStream()。 bestScore = ()。 (bestScor。 42 var fs:FileStream = new FileStream()。 var temp:Object = ()。 if(!){ trace(沒(méi)有存檔記錄 )。 ()){ 這種狀態(tài)持續(xù)的時(shí)間和每次改變的角度 } //隨機(jī) else if(pattern==4 amp。 ()){ 這種形狀持續(xù)的時(shí)間和產(chǎn)生的位置 } //豎直 else if(pattern==2 amp。 (t)。然而,我們?cè)撊绾沃谱鹘M成 MovieClip 的素材呢? 當(dāng)然, Flash Professional 工具是我們制作素材的好搭檔,它可以將一個(gè)動(dòng)畫的每幀導(dǎo)出為一組圖片序列,之后,我們把這一些圖片扔到一些工具,如TexturePacker 中,依靠這些工具,可以把一組圖片拼接到單獨(dú)的一張圖片中(我們稱之為 sprite atlas ,或 sprite sheet )去,以供我們?cè)?Starling 的MovieClip 類中使用。 (peMushroom)。 (peCoffee)。 } public static function getXml(name:String):XML{ if(gameTextureXML[name]==undefined){ var t:XML = XML(new Assets[name]())。 [Embed(source=res/,mimeType=application/octetstream)] static var particleMushroom:Class。當(dāng)然,你還得注意做垃圾回收的工作,當(dāng)粒子動(dòng)畫播放完畢后,你需要記得及時(shí)將粒子對(duì)象從 juggler 中移出,并對(duì) ParticleDesignerPS 對(duì)象調(diào)用 dispose 方法進(jìn)行對(duì)象銷毀。 } } 粒子特效 每當(dāng)提及漂亮的特效,我都會(huì)想起粒子特效,這玩意兒可是做游戲者的最愛(ài)。改游戲我自己實(shí)現(xiàn)一個(gè)簡(jiǎn)單的矩形 碰撞,將 hero、飛行器和各種道具均看作矩形,通過(guò)計(jì)算 hero 和他們的坐標(biāo)進(jìn)行判斷。 檢測(cè)碰撞的方法有很多:可以是對(duì) 物體實(shí)際像素的檢測(cè)( Sprite 或 MovieClip),也就是判斷兩個(gè)影片中的圖形是否重疊?對(duì)于這種檢測(cè)方法,要以影片內(nèi)圖形的實(shí)際可見(jiàn)像素判斷,還是以影片的矩形邊界來(lái)判斷呢?這就涉及到 hitTest 方法中內(nèi)置的兩個(gè)可選項(xiàng),用來(lái)滿足不同方面的需求。 主控類的實(shí)現(xiàn) 主控類在游戲運(yùn)行時(shí)表現(xiàn)為游戲窗口: 在此界面中,會(huì)用到碰撞檢測(cè),粒子特效、制作動(dòng)畫、緩動(dòng)引擎、道具的看似無(wú)規(guī)律但有規(guī)律的產(chǎn)生、飛行器產(chǎn)生前均會(huì)產(chǎn)生提示、保存歷史的最高分?jǐn)?shù)等。 case : 玩家吃了無(wú)敵加速后怎么處理 break。以上都是角色的上下移動(dòng),主要的方法是heroMove()。因此需要游戲制作方提供游戲視頻、圖片等詳細(xì)資料,才能對(duì)游戲的整體風(fēng)格提出具體的方案。每一款游戲的開發(fā)者都會(huì)重視背景音樂(lè)的質(zhì)量,音樂(lè)的風(fēng)格、節(jié)奏、旋律都可能對(duì)玩家形成較大的影響很多人是因?yàn)橐魳?lè)而愛(ài)上了游戲,很多游戲是因?yàn)橐魳?lè)而深入人心。在該游戲中,背景分為 4層。 Enemy 具有移動(dòng)、展示自己的功能,將這些功能設(shè)計(jì)成 Enemy 的方法。 2個(gè)類如下所示: c l a s s H e r o 類圖W e l c o m e a b o u t B t n : B u t t o n f l a g : N u m b e r h e r o : I m a g e p l a yB t n : B u t t o n t i t l e : I m a g e+ a d d T o S t a g e ( ) : vo i d+ o n C l i ck ( ) : vo i d+ o n T o u ch ( ) : vo i d+ u p d a t e ( ) : vo i d+ W e l l co m e ( )I n G a m e b a ck G r o u n d : G a m e B a ck G r o u n d e n e m yA r r : A r r a y g a m e S t a t e : i n t h e r o : H e r o s p e e d : N u m b e r s t a r t B t n : B u t t o n t o u ch X : N u m b e r t o u ch Y : N u m b e r+ a d d T o S t a g e ( ) : vo i d+ I n G a m e ( )+ i n i t S cr e e n ( ) : vo i d+ i n i t T e xt ( ) : vo i d+ l o a d ( ) : vo i d+ o n C l i ck ( ) : vo i d+ o n S t a r t T o u ch ( ) : vo i d+ u p d a t e ( ) : vo i d 圖 35 游戲界面類圖 玩家控制角色設(shè)計(jì) 我方游戲角色的原型是人物,定義為 Hero 類。游戲畫面 設(shè)計(jì)具體的結(jié)構(gòu)圖如下圖 33 所示: 跑 酷 游 戲 游 戲 開 始 前 界 面 游 戲 進(jìn) 行 中 界 面 游 戲 結(jié) 束 界 面 游 戲 準(zhǔn) 備 界 面 圖 33 游戲界面設(shè)計(jì)結(jié)構(gòu)圖 s d H e r o 順序圖W e l c o m e I n G a m e1 : o n C l i c k ( )2 : a d d T o S t a g e ( )3 : i n i t S c r e e n ( )4 : o n C l i c k ( )5 : o n S t a r t T o u c h ( )6 : u p d a t e ( )7 : o n P l a y A g a i n C l i c k ( ) 圖 34 游戲界面設(shè)計(jì) 順序 圖 26 啟動(dòng)游戲首先顯示的是游戲開始前界面,該界面上有按鈕,點(diǎn)擊相應(yīng)按鈕出現(xiàn)對(duì)應(yīng)的界面。 道具的種類和粒子效果可以提高游戲的趣味性,是游戲玩起來(lái)更加吸引人,因此在制作圖片素材時(shí)我花了很大功夫,由于道具和粒子效果具有獨(dú)立的屬 性和特征,因此把道具和粒子都設(shè)計(jì)成類。玩家控制 Person 躲避迎面爾來(lái)的敵人,如果碰上敵人,則 HP 減少 1,直到 HP 小于 1 則游戲失敗,游戲失敗時(shí)會(huì)出現(xiàn)在玩一次按鈕。在本課題中,我依照以前學(xué)過(guò)的知識(shí),采用多種方法對(duì)游戲進(jìn)行設(shè)計(jì)。其次,要有一定的可玩性,通過(guò)難度、道具、關(guān)卡和角色等等,增加了趣味性。在本游戲中,由于素材的限制,只有從頭到尾的一中背景音樂(lè)。 i n cl u d e 187。 道具的產(chǎn)生 在游戲過(guò)程中,有特殊功能的道具產(chǎn)生,玩家控制的角色吃掉后會(huì)獲得相應(yīng)的狀態(tài)。 i n cl u d e 187。 i n cl u d e 187。 171。 其用例圖如圖 28所示: 17 u c 用例圖H e r o碰撞敵人 圖 28 玩家的碰撞用例圖 表 27 玩家的碰撞用例說(shuō)明 用例 玩家的碰撞 用例編號(hào) 7 活動(dòng)者 游戲玩家 目的 游戲角色撞擊,做出相應(yīng)的反應(yīng) 簡(jiǎn)述 玩家通過(guò)按鈕移動(dòng),讓角色移動(dòng),若移動(dòng)過(guò)程中撞上敵人,做出相應(yīng)的反應(yīng) 輸入 玩家移動(dòng) 輸出 根據(jù)角色的位置以及敵人的位置,做出相應(yīng)的反應(yīng) 前提條件 系統(tǒng)配置正常,游戲運(yùn)行無(wú)錯(cuò)誤,并且正常啟動(dòng)游戲 主事件流 活動(dòng)者動(dòng)作 系統(tǒng)響應(yīng) 玩家移動(dòng) 根據(jù)角色的位置以及敵人的位置,做出相應(yīng)的反應(yīng) 異常事件 游戲運(yùn)行出錯(cuò),內(nèi)存消耗過(guò)大,閃屏,不能正常改變各自的狀 態(tài)。 其用例圖如圖 27 所示: u c 用例圖虛擬玩家(電腦)移動(dòng)動(dòng)畫 圖 27 虛擬玩家的移動(dòng)動(dòng)畫用例圖 表 26 虛擬玩家的移動(dòng)動(dòng)畫用例說(shuō)明 用例 虛擬玩家的移動(dòng)動(dòng)畫 用例編號(hào) 6 活動(dòng)者 虛擬玩家 目的 虛 擬玩家的移動(dòng)動(dòng)畫 簡(jiǎn)述 虛擬玩家控制敵人的移動(dòng),在移動(dòng)的過(guò)程中一直循環(huán)播放動(dòng)畫 輸入 無(wú) 輸出 在屏幕上一直播放動(dòng)畫 前提條件 系統(tǒng)配置正常,游戲運(yùn)行無(wú)錯(cuò)誤,并且正常啟動(dòng)游戲 主事件流 活動(dòng)者動(dòng)作 系統(tǒng)響應(yīng) 在屏幕上直線移動(dòng)。 每時(shí)每刻在變化著位置。 異常事件 游戲運(yùn)行出錯(cuò),內(nèi)存消耗過(guò)大沒(méi)有清理內(nèi)存;敵人角色不是在產(chǎn)生提示消失后產(chǎn)生。 異常事件 游戲運(yùn)行出錯(cuò),內(nèi)存消耗過(guò)大沒(méi)有清理內(nèi)存;不能正常顯示出敵人產(chǎn)生提示 14 虛擬玩家產(chǎn)生敵人 在虛擬玩家產(chǎn)生提示過(guò)后從該位置產(chǎn)生一個(gè)敵人,而且從有的幾種敵人背景隨機(jī)來(lái)產(chǎn)生一種背景。 虛擬玩家產(chǎn)生敵人前的提示 該游戲產(chǎn)生敵人前會(huì)在屏幕的最右方產(chǎn)生提示,表面在一段時(shí)間后會(huì)從這個(gè)位置產(chǎn)生敵人。如果撿到食物, Hero的分?jǐn)?shù)就會(huì)增加;如果撿到咖啡, Hero 能夠無(wú)敵并移動(dòng)速度加快;如果撿到蘑菇,屏幕上的所有食物都會(huì)快速移動(dòng)到 Hero 面前。 i n cl u d e 187。玩家控制角色移動(dòng),當(dāng) her