作者mimjy (米其)
看板GameDesign
标题[转录][心得] 关於夏夜攻防战 - 其六
时间Fri Jun 16 00:03:44 2006
如先前所言,我希望萤幕上出现的子弹是由不同武器所发射出来
即是说子弹彼此虽然各自独立,但却可以对玩家产生混合的影响
(就像开头所说的DDT+弹弓)
好比图层一般,层层独立,组合後变成最後的结果。
依照这个构想,我们可以把不同的武器所发射出来的子弹想像成独立的"弹幕"
彼此独立处理自己的移动,删除,碰撞等运算。而每种武器则各自掌管自己生成的弹幕。
至於武器与子弹的建构,就跟前篇建构STATE一样,先设计一个武器的原形class与
子弹的原形class,之後每把武器再各自继承之,并改写其中的Move(), isHit, Shoot()
等函式即可。
底下我们来看武器与子弹的prototype class:
class weapon{
poulic:
/*开火速率;发射前准备时间;弹药;跑位次数等*/
int fireRate;
int preapreTime;
int ammo;
int changePosition;
/*弹幕容纳*/
MovieClip mc;
/*要传达给子弹的资讯*/
float speed;
float damage;
/*有的没的Function*/
void init();
void shoot();
void move();
void isHit();
};
class bullet: public MovieClip{
public:
float radius; //子弹方向
float speed; //子弹目前速度
float damage; //子弹杀伤力
};
这就是所有的武器的原形,同时也是第一把武器的宣告式
第一把武器(弹弓)的行为模式最简单也最直接: 发射->移动->消失or命中
在shoot() 函式中,武器"Create"一颗子弹,然後在弹幕中登记,告诉弹幕
"我发射了一颗子弹,等会记得帮我处理他的移动以及碰撞嘿~"
於是,弹幕库每次都会列出所有登记的子弹,然後处理他们的移动(move)及碰撞(isHit)
子弹的座标空间设定,我用的是极座标。藉由角度(radius)以及长度(speed)
来计算出每颗子弹接下来的所在(在frame与frame之间)。
而所谓的移动(protoType),不过就是每1/30秒用radius & speed计算出子弹的位移,
然後累加之,透过每1/30秒一次次的重复计算,就能达到子弹移动的效果。
碰撞(protoType)部分,则是每1/30秒简单比较每颗子弹的与PLAYER的bounding box
有无相交即可(雷射与黑洞的部分比较麻烦,容後再叙)
至此,前置程式已经接近完成。
把Player的部分补上,就差不多了。
PLAYER,负责接收玩家端的资讯。
可以想见其中必定有一个专门处理键盘传入资讯的Listener,负责把从键盘接收到的
资讯传达给程式处理。
先简单讲一下一开始的Player设计。
class player{
public:
MovieClip mc; //实体影片片段
float speed; //移动速度
int turbo; //空白加速度
bool control; //操纵可否
enum ill; //不良状态
int illCount; //状态影响计数器
float attractRadius; //引力角度
int attractForce; //引力强度
void moving();
};
其中基本的如移动速度等不赘述,turbo用来制造"按下空白键的突然加速"效果
每按一下空白键,turbo会变成10,然後每1/30递减。这个turbo最後会与
位移相加,假设原本的位移是一次+4; 一下turbo突然变成 +14, 再来是+10, +6...
就能制作出"涡轮加速"的突加/减速度运动。
"ill&illCount"则是用来登记几种负面状态的影响。
至於attractXXXX这两个,用来处理被弹时的後退方向,以及後退的力道。与turbo相同
这个参数也会在最後与位移相加。
其他大多是一些比较繁杂的程式如接收、对应的处理等,这部分我就略过了。
计算一下目前做了些什麽:
Seeker具备基本的状态函式,武器库也有了一把武器,Player也能移动,攻击。
简单的游戏原形已经完成了(茶)
计算一下目前做了些什麽:
Seeker具备基本的状态函式,武器库也有了一把武器,Player也能移动,攻击。
简单的游戏原形已经完成了(茶)
於是,最早的版本长的就像底下(大约500行左右):
http://studentweb.ncnu.edu.tw/93321523/hb2006/teach/proto.swf
(续)
文章转自暨大霞蔚山城 ★ HenryBBS (henry.twbbs.org)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 163.22.18.97