作者mimjy (米其)
看板GameDesign
标题[转录][心得] 关於夏夜攻防战 - 九
时间Thu Jun 22 03:08:46 2006
基本的程式都有了之後,接下来就是开始写武器的部分
一开始规划了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