[轉錄][心得] 關於夏夜攻防戰 - 九
基本的程式都有了之後,接下來就是開始寫武器的部分
一開始規劃了15種,加後上來V1.2補上的兩種,共計17種的武器,形成17道關卡。
大抵上武器的製作流程:
繼承一個武器原形
->改寫Shoot(), Move(), isHit() 等Function
->製作武器的動作、子彈等MovieClip
每一個都這樣。
這邊就不得不重申一開始良好規劃的重要性。
17種寫完,都沒有影響整個程式的大架構。
底下我提幾個比較有趣的武器設計出來講。
導彈:
每一個子彈多了一個life參數,
當life<=0時會從第一移動型態(拋物線) 變成第二移動型態(追跡)
既然追的是玩家,總不能無止盡的追下去。
於是life參數回收再利用,life再次<=0時,停止追蹤改以現有的角度持續前進。
Beam & 放大燈:
兩個例外的碰撞偵測類型。
大抵上這遊戲除了這兩個以外,所有的子彈都是用簡單的bounding box作碰撞偵測
連一些稍微不規則的子彈如火箭、音符也都是有一個隱藏的box用來碰撞。
但這兩個例外,因為他們是直線的。
不是沒有想過作成"移動很快的長條型光束"但受限於Flash本身的效能
FPS上到35大概就極限了,子彈快到某一個程度,可是會"穿越"玩家卻沒有碰撞的
不夠快的光束,跟機關槍又有什麼兩樣呢?
因此最後這兩個武器的碰撞被我獨立出來,改以"範圍"來偵測
像這樣:
bool result = HitTest("beam", X, Y);
畫面上的(X,Y)座標點 有沒有在 beam影像物件 的範圍內?
這是相當耗費資源的檢查行為,因此設定上,沒有快速連發的雷射、
也沒有散彈雷射,其原因在此。
子母火箭 & 煙火
這兩個都是標準的子母彈, 但是模式仍有不同。
一個是子彈發射後母彈維持,且是橢圓形;一個子彈發射後母彈消滅。
像這類的子母彈,該武器原形在繼承時必須另外宣告一個彈幕給"子"彈使用。
並且除了原本的Shoot()函式、會再多一個SubShoot(),用來"Create"子彈。
防禦砲台 & 感應砲
這兩個都具有簡單的State機制,用來處理其多變的行為模式
防禦砲台定位在防禦Seeker,阻止Player下降攻擊。
因此,攻擊距離短、高命中率為其特點。
有簡單的State:
WANDER: 當Player遠離Seeker許多時。
LOCATE: 當Player離Seeker中等距離時,給定Player"底下"的位置,讓Guarder靠近
MOVE:處理Guarder的移動
FIRE:開砲啦
感應砲,移動模式為,持續的以Player周圍為目的地改變位置,然後給Player
來上背後的一發。
發射時先從地面起飛,持續一定的攻擊以後掉回地面,小跑步退場。
同樣具有稍微複雜的State,模式跟上面的大致相同。
LAND->loop(LOCATE->MOVE->SHOOT)->OUT
在處理這個武器時,原本的設定是當Player移動時,處在"MOVE"狀態的Funnel
也會相對改變其移動目的地,這樣是比較像感應砲真實的模式...
但是後來發現...實在太強了 強到作者根本閃不過 囧>
後來才改成現在只要拼命全螢幕亂逃,就能輕鬆(?)閃避,
但是一停下來就會非常危險的模式。
BlackHole
原本的構想是,即使是複數的黑洞,只要找出離Player最近的一顆,再根據
其距離算出對應的引力強度。但後來覺得這樣過於貧乏(?)
後來改成綜合計算所有釋出的黑洞的方位、距離,來決定最後的引力強度與方向。
後來證實,複數的黑洞影響所生成的力場,果然不錯玩。
為了弄出誇張的效果,背景還多了一層"Black"的Mask,只要場內有黑洞存在
遮罩就會慢慢浮現。
下一篇,來講一下美工、音效、以及其他足以決定遊戲成敗的東西。
(續)
文章轉自暨大霞蔚山城 ★ HenryBBS (henry.twbbs.org)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 163.22.18.97
GameDesign 近期熱門文章
PTT遊戲區 即時熱門文章